From a8d6e8143419e821882dc9c0087e4d60ebfd0732 Mon Sep 17 00:00:00 2001 From: Felipe Pena Date: Fri, 28 Nov 2008 15:36:34 +0000 Subject: [PATCH] - Fixed memory leaks in createFunction and createAggregate methods --- ext/sqlite3/sqlite3.c | 3 ++ .../tests/sqlite3_29_createfunction.phpt | 29 +++++++++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 ext/sqlite3/tests/sqlite3_29_createfunction.phpt diff --git a/ext/sqlite3/sqlite3.c b/ext/sqlite3/sqlite3.c index d444404c45..4519f40248 100644 --- a/ext/sqlite3/sqlite3.c +++ b/ext/sqlite3/sqlite3.c @@ -817,6 +817,7 @@ PHP_METHOD(sqlite3, createFunction) MAKE_STD_ZVAL(func->func); *(func->func) = *callback_func; zval_copy_ctor(func->func); + INIT_PZVAL(func->func); func->argc = sql_func_num_args; func->next = db_obj->funcs; @@ -876,10 +877,12 @@ PHP_METHOD(sqlite3, createAggregate) MAKE_STD_ZVAL(func->step); *(func->step) = *step_callback; zval_copy_ctor(func->step); + INIT_PZVAL(func->step); MAKE_STD_ZVAL(func->fini); *(func->fini) = *fini_callback; zval_copy_ctor(func->fini); + INIT_PZVAL(func->fini); func->argc = sql_func_num_args; func->next = db_obj->funcs; diff --git a/ext/sqlite3/tests/sqlite3_29_createfunction.phpt b/ext/sqlite3/tests/sqlite3_29_createfunction.phpt new file mode 100644 index 0000000000..9448b30ade --- /dev/null +++ b/ext/sqlite3/tests/sqlite3_29_createfunction.phpt @@ -0,0 +1,29 @@ +--TEST-- +SQLite3::createFunction - Basic test +--SKIPIF-- + +--FILE-- +createfunction($func, $func)); +var_dump($db->querySingle('SELECT strtoupper("test")')); + +$func2 = 'strtolower'; +var_dump($db->createfunction($func2, $func2)); +var_dump($db->querySingle('SELECT strtolower("TEST")')); + +var_dump($db->createfunction($func, $func2)); +var_dump($db->querySingle('SELECT strtoupper("tEst")')); + + +?> +--EXPECTF-- +bool(true) +%string|unicode%(4) "TEST" +bool(true) +%string|unicode%(4) "test" +bool(true) +%string|unicode%(4) "test" -- 2.40.0