shithub: libsamplerate

Download patch

ref: 71821ed9b805dcc124d91786eddba6b748327c23
parent: 5e01e55ad17d7c0bd1d3332e656335e914c16c65
author: Erik de Castro Lopo <erikd@mega-nerd.com>
date: Sat Jan 27 07:07:17 EST 2007

samplerate.c : Refactor checking of supplied src ratio against min and max.

--- a/.bzrignore
+++ b/.bzrignore
@@ -1,5 +1,6 @@
 *.la
 *.lo
+*.wav
 .deps
 .libs
 Makefile
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2007-01-27  Erik de Castro Lopo  <erikd AT mega-nerd DOT com>
+
+    * src/samplerate.c
+    Refactor checking of supplied src ratio against min and max.
+
 2007-01-21  Erik de Castro Lopo  <erikd AT mega-nerd DOT com>
 
     * doc/api.html doc/api_callback.html doc/api_misc.html
--- a/src/samplerate.c
+++ b/src/samplerate.c
@@ -1,5 +1,5 @@
 /*
-** Copyright (C) 2002-2006 Erik de Castro Lopo <erikd@mega-nerd.com>
+** Copyright (C) 2002-2007 Erik de Castro Lopo <erikd@mega-nerd.com>
 **
 ** This program is free software; you can redistribute it and/or modify
 ** it under the terms of the GNU General Public License as published by
@@ -35,6 +35,11 @@
 static int psrc_set_converter (SRC_PRIVATE	*psrc, int converter_type) ;
 
 
+static inline int
+is_bad_src_ratio (double ratio)
+{	return (ratio < (1.0 / SRC_MAX_RATIO) || ratio > (1.0 * SRC_MAX_RATIO)) ;
+} /* is_bad_src_ratio */
+
 SRC_STATE *
 src_new (int converter_type, int channels, int *error)
 {	SRC_PRIVATE	*psrc ;
@@ -128,7 +133,7 @@
 		return SRC_ERR_BAD_DATA ;
 
 	/* Check src_ratio is in range. */
-	if (data->src_ratio < (1.0 / SRC_MAX_RATIO) || data->src_ratio > (1.0 * SRC_MAX_RATIO))
+	if (is_bad_src_ratio (data->src_ratio))
 		return SRC_ERR_BAD_SRC_RATIO ;
 
 	/* And that data_in and data_out are valid. */
@@ -204,7 +209,7 @@
 	memset (&src_data, 0, sizeof (src_data)) ;
 
 	/* Check src_ratio is in range. */
-	if (src_ratio < (1.0 / SRC_MAX_RATIO) || src_ratio > (1.0 * SRC_MAX_RATIO))
+	if (is_bad_src_ratio (src_ratio))
 	{	psrc->error = SRC_ERR_BAD_SRC_RATIO ;
 		return 0 ;
 		} ;
@@ -279,6 +284,9 @@
 	if (psrc->vari_process == NULL || psrc->const_process == NULL)
 		return SRC_ERR_BAD_PROC_PTR ;
 
+	if (is_bad_src_ratio (new_ratio))
+		return SRC_ERR_BAD_SRC_RATIO ;
+
 	psrc->last_ratio = new_ratio ;
 
 	return SRC_ERR_NO_ERROR ;
@@ -343,13 +351,13 @@
 
 const char *
 src_get_version (void)
-{	return PACKAGE "-" VERSION " (c) 2002-2005 Erik de Castro Lopo" ;
+{	return PACKAGE "-" VERSION " (c) 2002-2007 Erik de Castro Lopo" ;
 } /* src_get_version */
 
 int
 src_is_valid_ratio (double ratio)
 {
-	if (ratio < (1.0 / SRC_MAX_RATIO) || ratio > (1.0 * SRC_MAX_RATIO))
+	if (is_bad_src_ratio (ratio))
 		return SRC_FALSE ;
 
 	return SRC_TRUE ;
@@ -528,12 +536,4 @@
 
 	return SRC_ERR_BAD_CONVERTER ;
 } /* psrc_set_converter */
-
-/*
-** Do not edit or modify anything in this comment block.
-** The arch-tag line is a file identity tag for the GNU Arch 
-** revision control system.
-**
-** arch-tag: a5c5f514-a370-4210-a066-7f2035de67fb
-*/