diff options
author | Johannes Schlüter <johannes@php.net> | 2014-01-21 16:37:02 +0100 |
---|---|---|
committer | Johannes Schlüter <johannes@php.net> | 2014-01-21 16:37:02 +0100 |
commit | 09eb3cf38119a488d0c7e40c30539008e78f2838 (patch) | |
tree | e1b49c69cbc1e3b3d9ac3dd1904eb815c0cc0e63 | |
parent | 69581cdbbbdfcf20edbbc7d787ef2efe0fdc3822 (diff) | |
parent | 5c964fb33266df24aa549dd653bd2271cc403925 (diff) | |
download | php-git-09eb3cf38119a488d0c7e40c30539008e78f2838.tar.gz |
Merge branch 'PHP-5.4' into PHP-5.5
-rw-r--r-- | ext/mysqlnd/mysqlnd_result.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/ext/mysqlnd/mysqlnd_result.c b/ext/mysqlnd/mysqlnd_result.c index 74019b55bf..fbf8ea031c 100644 --- a/ext/mysqlnd/mysqlnd_result.c +++ b/ext/mysqlnd/mysqlnd_result.c @@ -187,9 +187,11 @@ MYSQLND_METHOD(mysqlnd_res, free_buffered_data)(MYSQLND_RES * result TSRMLS_DC) if (set->data) { unsigned int copy_on_write_performed = 0; unsigned int copy_on_write_saved = 0; + zval **data = set->data; + set->data = NULL; /* prevent double free if following loop is interrupted */ for (row = set->row_count - 1; row >= 0; row--) { - zval **current_row = set->data + row * field_count; + zval **current_row = data + row * field_count; MYSQLND_MEMORY_POOL_CHUNK *current_buffer = set->row_buffers[row]; int64_t col; @@ -211,8 +213,7 @@ MYSQLND_METHOD(mysqlnd_res, free_buffered_data)(MYSQLND_RES * result TSRMLS_DC) MYSQLND_INC_GLOBAL_STATISTIC_W_VALUE2(STAT_COPY_ON_WRITE_PERFORMED, copy_on_write_performed, STAT_COPY_ON_WRITE_SAVED, copy_on_write_saved); - mnd_efree(set->data); - set->data = NULL; + mnd_efree(data); } if (set->row_buffers) { |