Author: anthm Date: Wed Oct 17 20:10:48 2007 New Revision: 5955 Modified: freeswitch/trunk/src/switch_odbc.c Log: umm, duh Modified: freeswitch/trunk/src/switch_odbc.c ============================================================================== --- freeswitch/trunk/src/switch_odbc.c (original) +++ freeswitch/trunk/src/switch_odbc.c Wed Oct 17 20:10:48 2007 @@ -305,7 +305,7 @@ { SQLHSTMT stmt = NULL; SQLSMALLINT c = 0, x = 0; - SQLINTEGER m = 0; + SQLINTEGER m = 0, t = 0; int result; assert(callback != NULL); @@ -333,43 +333,47 @@ SQLRowCount(stmt, &m); if (m > 0) { - int name_len = 256; - char **names; - char **vals; - int y = 0; + for (t = 0; t < m; t++) { + int name_len = 256; + char **names; + char **vals; + int y = 0; - if (!(result = SQLFetch(stmt)) == SQL_SUCCESS) { - goto error; - } - - names = calloc(c, sizeof(*names)); - vals = calloc(c, sizeof(*names)); + if (!(result = SQLFetch(stmt)) == SQL_SUCCESS) { + goto error; + } - assert(names && vals); + names = calloc(c, sizeof(*names)); + vals = calloc(c, sizeof(*vals)); - for (x = 1; x <= c; x++) { - SQLSMALLINT NameLength, DataType, DecimalDigits, Nullable; - SQLUINTEGER 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++; - } - - callback(pdata, y, vals, names); + assert(names && vals); - for (x = 0; x < y; x++) { - free(names[x]); - free(vals[x]); + for (x = 1; x <= c; x++) { + SQLSMALLINT NameLength, DataType, DecimalDigits, Nullable; + SQLUINTEGER 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)) { + break; + } + + for (x = 0; x < y; x++) { + free(names[x]); + free(vals[x]); + } + free(names); + free(vals); } - free(names); - free(vals); } SQLFreeHandle(SQL_HANDLE_STMT, stmt);
participants (1)
-
Freeswitch SVN