com php-src: Merge branch 'PHP-5.6': ext/mysqli/mysqli_api. c ext/mysqli/tests/bug67839.phpt ext/mysqlnd/co nfig9.m4 ext/mysqlnd/mysqlnd_ps_codec.c

From: Date: Wed, 07 Jan 2015 23:23:26 +0000
Subject: com php-src: Merge branch 'PHP-5.6': ext/mysqli/mysqli_api. c ext/mysqli/tests/bug67839.phpt ext/mysqlnd/co nfig9.m4 ext/mysqlnd/mysqlnd_ps_codec.c
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-84024@lists.php.net to get a copy of this message
Commit: 961da40809a8a01d76a52f93f6c20a4d6e5aeec2 Author: Keyur Govande <keyur@php.net> Wed, 7 Jan 2015 23:23:26 +0000 Parents: 3e826c97366044991ae3c892e00d607449f69d66 39f8960b17f658dd0af340e972e632833d2640f9 Branches: master Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=961da40809a8a01d76a52f93f6c20a4d6e5aeec2 Log: Merge branch 'PHP-5.6' * PHP-5.6: Add NEWS Add NEWS Patch commit d9f85373e32 by moving the float_to_double function to a header file. Fix for bugs #68114 (Build fails on OS X due to undefined symbols) and #68657 (Reading 4 byte floats with Mysqli and libmysqlclient has rounding errors). 5.5.22 now Conflicts: ext/mysqli/mysqli_api.c Bugs: https://bugs.php.net/68114 https://bugs.php.net/68657 Changed paths: MM ext/mysqli/mysqli_api.c MM ext/mysqli/tests/bug67839.phpt MM ext/mysqlnd/config9.m4 MM ext/mysqlnd/mysqlnd_ps_codec.c Diff: diff --cc ext/mysqli/mysqli_api.c index 698e6bb,3aa7b21...7ea4d6a --- a/ext/mysqli/mysqli_api.c +++ b/ext/mysqli/mysqli_api.c @@@ -30,9 -30,10 +30,10 @@@ #include "php_ini.h" #include "php_globals.h" #include "ext/standard/info.h" -#include "ext/standard/php_smart_str.h" +#include "zend_smart_str.h" #include "php_mysqli_structs..h" #include "mysqli_priv.h" + #include "ext/mysqlnd/mysql_float_to_double.h" #if !defined(MYSQLI_USE_MYSQLND) @@@ -413,9 -414,20 +414,18 @@@ mysqli_stmt_bind_result_do_bind(MY_STM col_type = (stmt->stmt->fields) ? stmt->stmt->fields[ofs].type : MYSQL_TYPE_STRING; switch (col_type) { - case MYSQL_TYPE_DOUBLE: case MYSQL_TYPE_FLOAT: - convert_to_double_ex(args[i]); stmt->result.buf[ofs].type = IS_DOUBLE; + stmt->result.buf[ofs].buflen = sizeof(float); + + stmt->result.buf[ofs].val = (char *)emalloc(sizeof(float)); + bind[ofs].buffer_type = MYSQL_TYPE_FLOAT; + bind[ofs].buffer = stmt->result.buf[ofs].val; + bind[ofs].is_null = &stmt->result.is_null[ofs]; + break; + + case MYSQL_TYPE_DOUBLE: - convert_to_double_ex(args[i]); + stmt->result.buf[ofs].type = IS_DOUBLE; stmt->result.buf[ofs].buflen = sizeof(double); /* allocate buffer for double */ @@@ -1021,8 -1064,22 +1031,22 @@@ void mysqli_stmt_fetch_libmysql(INTERNA } break; case IS_DOUBLE: - ZVAL_DOUBLE(result, *(double *)stmt->result.buf[i].val); + { + double dval; + if (stmt->stmt->bind[i].buffer_type == MYSQL_TYPE_FLOAT) { + #ifndef NOT_FIXED_DEC + # define NOT_FIXED_DEC 31 + #endif + dval = mysql_float_to_double(*(float *)stmt->result.buf[i].val, + (stmt->stmt->fields[i].decimals >= NOT_FIXED_DEC) ? -1 : + stmt->stmt->fields[i].decimals); + } else { + dval = *((double *)stmt->result.buf[i].val); + } + - ZVAL_DOUBLE(stmt->result.vars[i], dval); ++ ZVAL_DOUBLE(result, dval); break; + } case IS_STRING: if (stmt->stmt->bind[i].buffer_type == MYSQL_TYPE_LONGLONG #if MYSQL_VERSION_ID > 50002

« previous php.cvs (#84024) next »