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: | Keyur Govande | 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