summaryrefslogtreecommitdiff
path: root/ext/sqlite3/sqlite3.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/sqlite3/sqlite3.c')
-rw-r--r--ext/sqlite3/sqlite3.c6
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++) {