summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrank M. Kromann <fmk@php.net>2004-03-19 18:47:02 +0000
committerFrank M. Kromann <fmk@php.net>2004-03-19 18:47:02 +0000
commit39dc110f91e221586b0fbdf377821ad127148de7 (patch)
tree2d9209ad7f1600c51b9ac95b34988c7be4060061
parenta3b179d9162dd58cca8a07a56defe2eb1cfce5e4 (diff)
downloadphp-git-39dc110f91e221586b0fbdf377821ad127148de7.tar.gz
MFH Fix for #26589. Crash when selecting many columns of type Money
-rw-r--r--ext/mssql/php_mssql.c21
1 files changed, 19 insertions, 2 deletions
diff --git a/ext/mssql/php_mssql.c b/ext/mssql/php_mssql.c
index c03c856d64..0e964db325 100644
--- a/ext/mssql/php_mssql.c
+++ b/ext/mssql/php_mssql.c
@@ -796,10 +796,13 @@ static void php_mssql_get_column_content_with_type(mssql_link *mssql_ptr,int off
Z_TYPE_P(result) = IS_STRING;
break;
}
+ case SQLMONEY4:
case SQLFLT4:
Z_DVAL_P(result) = (double) floatcol4(offset);
Z_TYPE_P(result) = IS_DOUBLE;
break;
+ case SQLMONEY:
+ case SQLMONEYN:
case SQLFLT8:
Z_DVAL_P(result) = (double) floatcol8(offset);
Z_TYPE_P(result) = IS_DOUBLE;
@@ -898,8 +901,19 @@ static void php_mssql_get_column_content_without_type(mssql_link *mssql_ptr,int
if ((column_type != SQLDATETIME && column_type != SQLDATETIM4) || MS_SQL_G(datetimeconvert)) {
- if (column_type == SQLDATETIM4) res_length += 14;
- if (column_type == SQLDATETIME) res_length += 10;
+ switch (column_type) {
+ case SQLDATETIM4 :
+ res_length += 14;
+ break;
+ case SQLDATETIME :
+ res_length += 10;
+ break;
+ case SQLMONEY :
+ case SQLMONEY4 :
+ case SQLMONEYN :
+ res_length += 5;
+ break;
+ }
res_buf = (unsigned char *) emalloc(res_length+1);
res_length = dbconvert(NULL,coltype(offset),dbdata(mssql_ptr->link,offset), res_length, SQLCHAR, res_buf, -1);
@@ -956,6 +970,9 @@ static void _mssql_get_sp_result(mssql_link *mssql_ptr, mssql_statement *stateme
case SQLFLT4:
case SQLFLT8:
case SQLFLTN:
+ case SQLMONEY4:
+ case SQLMONEY:
+ case SQLMONEYN:
convert_to_double_ex(&bind->zval);
Z_DVAL_P(bind->zval) = *((double *)(dbretdata(mssql_ptr->link,i)));
break;