summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ext/sqlite3/sqlite3.c3
-rw-r--r--ext/sqlite3/tests/sqlite3_29_createfunction.phpt29
2 files changed, 32 insertions, 0 deletions
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--
+<?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"