From: Felipe Pena Date: Fri, 28 Nov 2008 15:37:02 +0000 (+0000) Subject: - MFH: Fixed memory leaks in createFunction and createAggregate methods X-Git-Tag: php-5.3.0alpha2~49 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=9983e2689a66e9e1f739bbba9a4f3a2b690d075a;p=php - MFH: Fixed memory leaks in createFunction and createAggregate methods --- diff --git a/ext/sqlite3/sqlite3.c b/ext/sqlite3/sqlite3.c index 8d4f229816..7668fc8a8e 100644 --- a/ext/sqlite3/sqlite3.c +++ b/ext/sqlite3/sqlite3.c @@ -791,6 +791,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; @@ -849,10 +850,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"