]> granicus.if.org Git - php/commitdiff
- Fixed bug #48693 (Double declaration of __lambda_func when lambda wrongly formatted)
authorFelipe Pena <felipe@php.net>
Sun, 28 Jun 2009 01:14:28 +0000 (01:14 +0000)
committerFelipe Pena <felipe@php.net>
Sun, 28 Jun 2009 01:14:28 +0000 (01:14 +0000)
Zend/tests/bug48693.phpt [new file with mode: 0644]
Zend/zend_builtin_functions.c

diff --git a/Zend/tests/bug48693.phpt b/Zend/tests/bug48693.phpt
new file mode 100644 (file)
index 0000000..e574346
--- /dev/null
@@ -0,0 +1,28 @@
+--TEST--
+Bug #48693 (Double declaration of __lambda_func when lambda wrongly formatted)
+--FILE--
+<?php
+
+$x = create_function('', 'return 1; }');
+$y = create_function('', 'function a() { }; return 2;');
+$z = create_function('', '{');
+$w = create_function('', 'return 3;');
+
+var_dump(
+       $x,
+       $y(),
+       $z,
+       $w(),
+       $y != $z
+);
+
+?>
+--EXPECTF--
+Parse error: syntax error, unexpected '}' in %s(%d) : runtime-created function on line 1
+
+Parse error: syntax error, unexpected $end in %s(%d) : runtime-created function on line 1
+bool(false)
+int(2)
+bool(false)
+int(3)
+bool(true)
index ca054f3086d1a098a32063dad563ef6e93d7bf38..dba4b5ca4486164ce7fe1d226c1b2b1ebdd11730 100644 (file)
@@ -1794,6 +1794,7 @@ ZEND_FUNCTION(create_function)
                zend_hash_del(EG(function_table), LAMBDA_TEMP_FUNCNAME, sizeof(LAMBDA_TEMP_FUNCNAME));
                RETURN_ASCII_STRINGL(function_name, function_name_length, 0);
        } else {
+               zend_hash_del(EG(function_table), LAMBDA_TEMP_FUNCNAME, sizeof(LAMBDA_TEMP_FUNCNAME));
                RETURN_FALSE;
        }
 }