[Freeswitch-svn] [commit] r12081 - freeswitch/trunk/src

FreeSWITCH SVN silik0n at freeswitch.org
Mon Feb 16 20:29:50 PST 2009


Author: silik0n
Date: Mon Feb 16 22:29:50 2009
New Revision: 12081

Log:
Lets not error on a query that returns 0 rows

Modified:
   freeswitch/trunk/src/switch_odbc.c

Modified: freeswitch/trunk/src/switch_odbc.c
==============================================================================
--- freeswitch/trunk/src/switch_odbc.c	(original)
+++ freeswitch/trunk/src/switch_odbc.c	Mon Feb 16 22:29:50 2009
@@ -366,56 +366,57 @@
 	SQLNumResultCols(stmt, &c);
 	SQLRowCount(stmt, &m);
 
-
-	for (t = 0 ;; t++) {
-		int name_len = 256;
-		char **names;
-		char **vals;
-		int y = 0;
-		int done = 0;
-
-		result = SQLFetch(stmt);
-
-		if (result != SQL_SUCCESS) {
-			if (result != SQL_NO_DATA){
-				err++;
+	if (m > 0) {
+		for (t = 0 ;; t++) {
+			int name_len = 256;
+			char **names;
+			char **vals;
+			int y = 0;
+			int done = 0;
+	
+			result = SQLFetch(stmt);
+	
+			if (result != SQL_SUCCESS) {
+				if (result != SQL_NO_DATA){
+					err++;
+				}
+				break;
+			}
+	
+			names = calloc(c, sizeof(*names));
+			vals = calloc(c, sizeof(*vals));
+	
+			switch_assert(names && vals);
+	
+			for (x = 1; x <= c; x++) {
+				SQLSMALLINT NameLength, DataType, DecimalDigits, Nullable;
+				SQLULEN ColumnSize;
+				names[y] = malloc(name_len);
+				memset(names[y], 0, name_len);
+	
+				SQLDescribeCol(stmt, x, (SQLCHAR *) names[y], (SQLSMALLINT) name_len, &NameLength, &DataType, &ColumnSize, &DecimalDigits, &Nullable);
+				ColumnSize++;
+	
+				vals[y] = malloc(ColumnSize);
+				memset(vals[y], 0, ColumnSize);
+				SQLGetData(stmt, x, SQL_C_CHAR, (SQLCHAR *) vals[y], ColumnSize, NULL);
+				y++;
 			}
-			break;
-		}
-
-		names = calloc(c, sizeof(*names));
-		vals = calloc(c, sizeof(*vals));
-
-		switch_assert(names && vals);
-
-		for (x = 1; x <= c; x++) {
-			SQLSMALLINT NameLength, DataType, DecimalDigits, Nullable;
-			SQLULEN ColumnSize;
-			names[y] = malloc(name_len);
-			memset(names[y], 0, name_len);
-
-			SQLDescribeCol(stmt, x, (SQLCHAR *) names[y], (SQLSMALLINT) name_len, &NameLength, &DataType, &ColumnSize, &DecimalDigits, &Nullable);
-			ColumnSize++;
-
-			vals[y] = malloc(ColumnSize);
-			memset(vals[y], 0, ColumnSize);
-			SQLGetData(stmt, x, SQL_C_CHAR, (SQLCHAR *) vals[y], ColumnSize, NULL);
-			y++;
-		}
-
-		if (callback(pdata, y, vals, names)) {
-			done = 1;
-		}
 
-		for (x = 0; x < y; x++) {
-			free(names[x]);
-			free(vals[x]);
-		}
-		free(names);
-		free(vals);
+			if (callback(pdata, y, vals, names)) {
+				done = 1;
+			}
+	
+			for (x = 0; x < y; x++) {
+				free(names[x]);
+				free(vals[x]);
+			}
+			free(names);
+			free(vals);
 
-		if (done) {
+			if (done) {
 			break;
+			}
 		}
 	}
 	



More information about the Freeswitch-svn mailing list