diff options
Diffstat (limited to 'ext/sqlite3/sqlite3.c')
| -rw-r--r-- | ext/sqlite3/sqlite3.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/ext/sqlite3/sqlite3.c b/ext/sqlite3/sqlite3.c index 16d37aea9d..cc9c5f57a9 100644 --- a/ext/sqlite3/sqlite3.c +++ b/ext/sqlite3/sqlite3.c @@ -714,7 +714,7 @@ static int sqlite3_do_callback(struct php_sqlite3_fci *fc, zval *cb, int argc, s if (Z_ISUNDEF(agg_context->zval_context)) { ZVAL_NULL(&agg_context->zval_context); } - ZVAL_COPY_VALUE(&zargs[0], &agg_context->zval_context); + ZVAL_DUP(&zargs[0], &agg_context->zval_context); ZVAL_LONG(&zargs[1], agg_context->row_count); } @@ -750,6 +750,10 @@ static int sqlite3_do_callback(struct php_sqlite3_fci *fc, zval *cb, int argc, s php_error_docref(NULL, E_WARNING, "An error occurred while invoking the callback"); } + if (is_agg) { + zval_ptr_dtor(&zargs[0]); + } + /* clean up the params */ if (fake_argc) { for (i = is_agg; i < argc + is_agg; i++) { |
