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

index d444404c455113f0e4f3c8dba9b9e5135fa7ae3f..4519f40248c66df89baed3dc7e0dfba214259604 100644 (file)
@@ -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 (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"