Skip to content

Commit 6768646

Browse files
committed
Merge branch 'PHP-5.6'
2 parents 807d937 + 4d43e2e commit 6768646

File tree

1 file changed

+4
-3
lines changed

1 file changed

+4
-3
lines changed

ext/mysqlnd/mysqlnd_result.c

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -187,9 +187,11 @@ MYSQLND_METHOD(mysqlnd_res, free_buffered_data)(MYSQLND_RES * result TSRMLS_DC)
187187
if (set->data) {
188188
unsigned int copy_on_write_performed = 0;
189189
unsigned int copy_on_write_saved = 0;
190+
zval **data = set->data;
191+
set->data = NULL; /* prevent double free if following loop is interrupted */
190192

191193
for (row = set->row_count - 1; row >= 0; row--) {
192-
zval **current_row = set->data + row * field_count;
194+
zval **current_row = data + row * field_count;
193195
MYSQLND_MEMORY_POOL_CHUNK *current_buffer = set->row_buffers[row];
194196
int64_t col;
195197

@@ -211,8 +213,7 @@ MYSQLND_METHOD(mysqlnd_res, free_buffered_data)(MYSQLND_RES * result TSRMLS_DC)
211213

212214
MYSQLND_INC_GLOBAL_STATISTIC_W_VALUE2(STAT_COPY_ON_WRITE_PERFORMED, copy_on_write_performed,
213215
STAT_COPY_ON_WRITE_SAVED, copy_on_write_saved);
214-
mnd_efree(set->data);
215-
set->data = NULL;
216+
mnd_efree(data);
216217
}
217218

218219
if (set->row_buffers) {

0 commit comments

Comments
 (0)