summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFelipe Pena <felipe@php.net>2009-06-28 01:16:36 +0000
committerFelipe Pena <felipe@php.net>2009-06-28 01:16:36 +0000
commitef600a05a56596a24bc52865bcb9209e105f87cc (patch)
tree3f490e84de997de0b9dbdfa76089229aab879d26
parentc4e0f38aa790d7990b48f0ee904294b1fda17f12 (diff)
downloadphp-git-ef600a05a56596a24bc52865bcb9209e105f87cc.tar.gz
- MFH: Fixed bug #48693 (Double declaration of __lambda_func when lambda wrongly formatted)
-rw-r--r--NEWS2
-rw-r--r--Zend/tests/bug48693.phpt28
-rw-r--r--Zend/zend_builtin_functions.c1
3 files changed, 31 insertions, 0 deletions
diff --git a/NEWS b/NEWS
index eed220fa75..b20f2b6ce7 100644
--- a/NEWS
+++ b/NEWS
@@ -1,6 +1,8 @@
PHP NEWS
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
?? ??? 2009, PHP 5.2.11
+- Fixed bug #48693 (Double declaration of __lambda_func when lambda wrongly
+ formatted). (peter at lvp-media dot com, Felipe)
- Fixed bug #48661 (phpize is broken with non-bash shells). (Jani)
- Fixed bug #48636 (Error compiling of ext/date on netware). (guenter at
php.net, Ilia)
diff --git a/Zend/tests/bug48693.phpt b/Zend/tests/bug48693.phpt
new file mode 100644
index 0000000000..e574346029
--- /dev/null
+++ b/Zend/tests/bug48693.phpt
@@ -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)
diff --git a/Zend/zend_builtin_functions.c b/Zend/zend_builtin_functions.c
index 185fb361c4..25cb220ea5 100644
--- a/Zend/zend_builtin_functions.c
+++ b/Zend/zend_builtin_functions.c
@@ -1516,6 +1516,7 @@ ZEND_FUNCTION(create_function)
zend_hash_del(EG(function_table), LAMBDA_TEMP_FUNCNAME, sizeof(LAMBDA_TEMP_FUNCNAME));
RETURN_STRINGL(function_name, function_name_length, 0);
} else {
+ zend_hash_del(EG(function_table), LAMBDA_TEMP_FUNCNAME, sizeof(LAMBDA_TEMP_FUNCNAME));
RETURN_FALSE;
}
}