]> granicus.if.org Git - php/commitdiff
- MFH: Fixed memory leaks in createFunction and createAggregate methods
authorFelipe Pena <felipe@php.net>
Fri, 28 Nov 2008 15:37:02 +0000 (15:37 +0000)
committerFelipe Pena <felipe@php.net>
Fri, 28 Nov 2008 15:37:02 +0000 (15:37 +0000)
ext/sqlite3/sqlite3.c
ext/sqlite3/tests/sqlite3_29_createfunction.phpt [new file with mode: 0644]

index 8d4f2298163db8b36d5d4393722b5ad971c7b66d..7668fc8a8e69b030ba041a1aa5bbac8ec5fc9745 100644 (file)
@@ -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 (file)
index 0000000..9448b30
--- /dev/null
@@ -0,0 +1,29 @@
+--TEST--
+SQLite3::createFunction - Basic test
+--SKIPIF--
+<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
+--FILE--
+<?php
+
+require_once(dirname(__FILE__) . '/new_db.inc');
+
+$func = 'strtoupper';
+var_dump($db->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"