cvs: ZendEngine2 / zend_execute.c /tests bug26802.phpt
| From: | Marcus Boerger | Date: | Mon, 05 Jan 2004 22:45:12 +0000 |
| Subject: | cvs: ZendEngine2 / zend_execute.c /tests bug26802.phpt | ||
| Groups: | php.zend-engine.cvs | ||
| Request: | Send a blank email to php-zend-engine-cvs+get-2179@lists.php.net to get a copy of this message | ||
helly Mon Jan 5 17:45:12 2004 EDT
Modified files:
/ZendEngine2 zend_execute.c
/ZendEngine2/tests bug26802.phpt
Log:
Fixed bug #26802
Index: ZendEngine2/zend_execute.c
diff -u ZendEngine2/zend_execute.c:1.578 ZendEngine2/zend_execute.c:1.579
--- ZendEngine2/zend_execute.c:1.578 Mon Jan 5 06:45:46 2004
+++ ZendEngine2/zend_execute.c Mon Jan 5 17:45:11 2004
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_execute.c,v 1.578 2004/01/05 11:45:46 stas Exp $ */
+/* $Id: zend_execute.c,v 1.579 2004/01/05 22:45:11 helly Exp $ */
#define ZEND_INTENSIVE_DEBUGGING 0
@@ -2470,8 +2470,25 @@
lcname = zend_str_tolower_dup(function_name_strval, function_name_strlen);
if (zend_hash_find(EG(function_table), lcname, function_name_strlen+1, (void **)
&function)==FAILURE) {
- efree(lcname);
- zend_error(E_ERROR, "Call to undefined function %s()", function_name_strval);
+ char *method;
+ zend_class_entry **pce;
+
+ if ((method = strstr(lcname, "::")) != NULL) {
+ *method = '\0';
+ method +=2;
+ if (zend_lookup_class(lcname, strlen(lcname), &pce TSRMLS_CC) == SUCCESS) {
+ if (zend_hash_find(&(*pce)->function_table, method, strlen(method)+1, (void **)
&function) == FAILURE) {
+ efree(lcname);
+ zend_error(E_ERROR, "Call to undefined method %s()", function_name_strval);
+ }
+ } else {
+ efree(lcname);
+ zend_error(E_ERROR, "Call to method of undefined class %s()", function_name_strval);
+ }
+ } else {
+ efree(lcname);
+ zend_error(E_ERROR, "Call to undefined function %s()", function_name_strval);
+ }
}
efree(lcname);
Index: ZendEngine2/tests/bug26802.phpt
diff -u ZendEngine2/tests/bug26802.phpt:1.2 ZendEngine2/tests/bug26802.phpt:1.3
--- ZendEngine2/tests/bug26802.phpt:1.2 Mon Jan 5 17:40:24 2004
+++ ZendEngine2/tests/bug26802.phpt Mon Jan 5 17:45:11 2004
@@ -1,5 +1,5 @@
--TEST--
-#26802 (Can't call static method using a variable)
+Bug #26802 (Can't call static method using a variable)
--FILE--
<?php