Skip to content

Commit 677d22b

Browse files
authored
Merge pull request wankdanker#9 from markdirish/bound_row_data
Fixing both an SQL_FLOAT issue and boundRow garbage Data Fixes wankdanker#67 Fixes wankdanker#8
2 parents 64672dd + e17247b commit 677d22b

File tree

1 file changed

+6
-5
lines changed

1 file changed

+6
-5
lines changed

src/odbc.cpp

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -361,13 +361,14 @@ SQLRETURN ODBC::BindColumns(QueryData *data) {
361361
switch(column->DataType) {
362362

363363
case SQL_REAL:
364-
case SQL_DECIMAL :
365-
case SQL_NUMERIC :
364+
case SQL_DECIMAL:
365+
case SQL_NUMERIC:
366366
maxColumnLength = (column->ColumnSize + 1) * sizeof(SQLCHAR);
367367
targetType = SQL_C_CHAR;
368368
break;
369369

370-
case SQL_DOUBLE :
370+
case SQL_FLOAT:
371+
case SQL_DOUBLE:
371372
maxColumnLength = column->ColumnSize;
372373
targetType = SQL_C_DOUBLE;
373374
break;
@@ -433,7 +434,7 @@ SQLRETURN ODBC::FetchAll(QueryData *data) {
433434

434435
while(SQL_SUCCEEDED(returnCode = SQLFetch(data->hSTMT))) {
435436

436-
ColumnData *row = new ColumnData[data->columnCount];
437+
ColumnData *row = new ColumnData[data->columnCount]();
437438

438439
// Iterate over each column, putting the data in the row object
439440
for (int i = 0; i < data->columnCount; i++) {
@@ -442,7 +443,7 @@ SQLRETURN ODBC::FetchAll(QueryData *data) {
442443
if (row[i].size == SQL_NULL_DATA) {
443444
row[i].data = NULL;
444445
} else {
445-
row[i].data = new SQLCHAR[row[i].size];
446+
row[i].data = new SQLCHAR[row[i].size + 1]();
446447
memcpy(row[i].data, data->boundRow[i], row[i].size);
447448
}
448449
}

0 commit comments

Comments
 (0)