svn: /php/php-src/ branches/PHP_5_3/ext/mysqli/mysqli_api.c trunk/ext/mysqli/mysqli_api.c
| From: | Ulf Wendel | Date: | Fri, 11 Sep 2009 12:28:47 +0000 |
| Subject: | svn: /php/php-src/ branches/PHP_5_3/ext/mysqli/mysqli_api.c trunk/ext/mysqli/mysqli_api.c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-60379@lists.php.net to get a copy of this message | ||
uw Fri, 11 Sep 2009 12:28:47 +0000
Revision: http://svn.php.net/viewvc?view=revision&revision=288265
Log:
Stepping back to PHP 5.2.x and earlier logic of allocating even huge pieces of memory for large BLOB
types to avoid data truncation. This fixes the test failure of 005.phpt when using MySQL Client
Library (libmysql). The test does pass with mysqlnd because mysqlnd does not have any issues here.
Changed paths:
U php/php-src/branches/PHP_5_3/ext/mysqli/mysqli_api.c
U php/php-src/trunk/ext/mysqli/mysqli_api.c
Modified: php/php-src/branches/PHP_5_3/ext/mysqli/mysqli_api.c
===================================================================
--- php/php-src/branches/PHP_5_3/ext/mysqli/mysqli_api.c 2009-09-11 12:27:29 UTC (rev 288264)
+++ php/php-src/branches/PHP_5_3/ext/mysqli/mysqli_api.c 2009-09-11 12:28:47 UTC (rev 288265)
@@ -395,7 +395,9 @@
different lengths and you will see that we get different lengths in
stmt->stmt->fields[ofs].length
The just take 256 and saves us from realloc-ing.
*/
- stmt->result.buf[ofs].buflen = 256;
+ stmt->result.buf[ofs].buflen =
+ (stmt->stmt->fields) ? (stmt->stmt->fields[ofs].length) ?
stmt->stmt->fields[ofs].length + 1: 256: 256;
+
} else {
/*
the user has called store_result(). if he does not there is no way to determine the
Modified: php/php-src/trunk/ext/mysqli/mysqli_api.c
===================================================================
--- php/php-src/trunk/ext/mysqli/mysqli_api.c 2009-09-11 12:27:29 UTC (rev 288264)
+++ php/php-src/trunk/ext/mysqli/mysqli_api.c 2009-09-11 12:28:47 UTC (rev 288265)
@@ -395,7 +395,9 @@
different lengths and you will see that we get different lengths in
stmt->stmt->fields[ofs].length
The just take 256 and saves us from realloc-ing.
*/
- stmt->result.buf[ofs].buflen = 256;
+ stmt->result.buf[ofs].buflen =
+ (stmt->stmt->fields) ? (stmt->stmt->fields[ofs].length) ?
stmt->stmt->fields[ofs].length + 1: 256: 256;
+
} else {
/*
the user has called store_result(). if he does not there is no way to determine the