diff options
author | Frank M. Kromann <fmk@php.net> | 2004-03-19 18:47:02 +0000 |
---|---|---|
committer | Frank M. Kromann <fmk@php.net> | 2004-03-19 18:47:02 +0000 |
commit | 39dc110f91e221586b0fbdf377821ad127148de7 (patch) | |
tree | 2d9209ad7f1600c51b9ac95b34988c7be4060061 | |
parent | a3b179d9162dd58cca8a07a56defe2eb1cfce5e4 (diff) | |
download | php-git-39dc110f91e221586b0fbdf377821ad127148de7.tar.gz |
MFH Fix for #26589. Crash when selecting many columns of type Money
-rw-r--r-- | ext/mssql/php_mssql.c | 21 |
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; |