felipe                                   Tue, 02 Mar 2010 00:16:40 +0000

Revision: http://svn.php.net/viewvc?view=revision&revision=295706

Log:
- Fixed bug #51176 (Static calling in non-static method behaves like $this->)

Bug: http://bugs.php.net/51176 (error getting bug information)
      
Changed paths:
    U   php/php-src/branches/PHP_5_3/NEWS
    U   php/php-src/branches/PHP_5_3/Zend/tests/bug45180.phpt
    U   php/php-src/branches/PHP_5_3/Zend/tests/bug45186.phpt
    A   php/php-src/branches/PHP_5_3/Zend/tests/bug51176.phpt
    U   php/php-src/branches/PHP_5_3/Zend/tests/call_static_003.phpt
    U   php/php-src/branches/PHP_5_3/Zend/tests/call_static_007.phpt
    U   php/php-src/branches/PHP_5_3/Zend/zend_object_handlers.c
    U   php/php-src/trunk/Zend/tests/bug45180.phpt
    U   php/php-src/trunk/Zend/tests/bug45186.phpt
    A   php/php-src/trunk/Zend/tests/bug51176.phpt
    U   php/php-src/trunk/Zend/tests/call_static_003.phpt
    U   php/php-src/trunk/Zend/tests/call_static_007.phpt
    U   php/php-src/trunk/Zend/zend_object_handlers.c

Modified: php/php-src/branches/PHP_5_3/NEWS
===================================================================
--- php/php-src/branches/PHP_5_3/NEWS	2010-03-01 23:49:01 UTC (rev 295705)
+++ php/php-src/branches/PHP_5_3/NEWS	2010-03-02 00:16:40 UTC (rev 295706)
@@ -69,7 +69,9 @@
 - Fixed memory leak in the realpath cache on Windows. (Pierre)
 - Fixed memory leak in zip_close. (Pierre)

-- Fixed #51059 (crypt crashes when invalid salt are given). (Pierre)
+- Fixed bug #51176 (Static calling in non-static method behaves like $this->).
+  (Felipe)
+- Fixed bug #51059 (crypt crashes when invalid salt are given). (Pierre)
 - Fixed bug #50952 (allow underscore _ in constants parsed in php.ini files).
   (Jani)
 - Fixed bug #50940 (Custom content-length set incorrectly in Apache SAPIs).

Modified: php/php-src/branches/PHP_5_3/Zend/tests/bug45180.phpt
===================================================================
--- php/php-src/branches/PHP_5_3/Zend/tests/bug45180.phpt	2010-03-01 23:49:01 UTC (rev 295705)
+++ php/php-src/branches/PHP_5_3/Zend/tests/bug45180.phpt	2010-03-02 00:16:40 UTC (rev 295706)
@@ -43,11 +43,11 @@
 string(3) "ABC"
 __call:
 string(3) "ABC"
-__call:
+__callstatic:
 string(3) "XYZ"
-__call:
+__callstatic:
 string(3) "WWW"
-__call:
+__callstatic:
 string(3) "ABC"
 __callstatic:
 string(1) "A"

Modified: php/php-src/branches/PHP_5_3/Zend/tests/bug45186.phpt
===================================================================
--- php/php-src/branches/PHP_5_3/Zend/tests/bug45186.phpt	2010-03-01 23:49:01 UTC (rev 295705)
+++ php/php-src/branches/PHP_5_3/Zend/tests/bug45186.phpt	2010-03-02 00:16:40 UTC (rev 295706)
@@ -35,17 +35,17 @@

 ?>
 --EXPECTF--
-__call:
+__callstatic:
 string(3) "ABC"
-__call:
+__callstatic:
 string(3) "ABC"
 __call:
 string(3) "xyz"
-__call:
+__callstatic:
 string(3) "www"
 __call:
 string(1) "y"
-__call:
+__callstatic:
 string(1) "y"
 ok
 __callstatic:

Added: php/php-src/branches/PHP_5_3/Zend/tests/bug51176.phpt
===================================================================
--- php/php-src/branches/PHP_5_3/Zend/tests/bug51176.phpt	                        (rev 0)
+++ php/php-src/branches/PHP_5_3/Zend/tests/bug51176.phpt	2010-03-02 00:16:40 UTC (rev 295706)
@@ -0,0 +1,32 @@
+--TEST--
+Bug #51176 (Static calling in non-static method behaves like $this->)
+--FILE--
+<?php
+class Foo
+{
+	public function start()
+	{
+		self::bar();
+		static::bar();
+		Foo::bar();
+	}
+
+	public function __call($n, $a)
+	{
+		echo "instance\n";
+	}
+
+	public static function __callStatic($n, $a)
+	{
+		echo "static\n";
+	}
+}
+
+$foo = new Foo();
+$foo->start();
+
+?>
+--EXPECT--
+static
+static
+static


Property changes on: php/php-src/branches/PHP_5_3/Zend/tests/bug51176.phpt
___________________________________________________________________
Added: svn:keywords
   + Id Rev Revision
Added: svn:eol-style
   + native

Modified: php/php-src/branches/PHP_5_3/Zend/tests/call_static_003.phpt
===================================================================
--- php/php-src/branches/PHP_5_3/Zend/tests/call_static_003.phpt	2010-03-01 23:49:01 UTC (rev 295705)
+++ php/php-src/branches/PHP_5_3/Zend/tests/call_static_003.phpt	2010-03-02 00:16:40 UTC (rev 295706)
@@ -28,9 +28,9 @@
 --EXPECT--
 nonstatic
 string(6) "fOoBaR"
-nonstatic
+static
 string(6) "foOBAr"
-nonstatic
+static
 string(6) "fOOBAr"
 static
 string(3) "bAr"

Modified: php/php-src/branches/PHP_5_3/Zend/tests/call_static_007.phpt
===================================================================
--- php/php-src/branches/PHP_5_3/Zend/tests/call_static_007.phpt	2010-03-01 23:49:01 UTC (rev 295705)
+++ php/php-src/branches/PHP_5_3/Zend/tests/call_static_007.phpt	2010-03-02 00:16:40 UTC (rev 295706)
@@ -30,5 +30,5 @@
 --EXPECT--
 __callstatic: Test
 __call: Test
-__call: Bar
+__callstatic: Bar
 __callstatic: Foo

Modified: php/php-src/branches/PHP_5_3/Zend/zend_object_handlers.c
===================================================================
--- php/php-src/branches/PHP_5_3/Zend/zend_object_handlers.c	2010-03-01 23:49:01 UTC (rev 295705)
+++ php/php-src/branches/PHP_5_3/Zend/zend_object_handlers.c	2010-03-02 00:16:40 UTC (rev 295706)
@@ -953,13 +953,13 @@
 	if (!fbc && zend_hash_find(&ce->function_table, lc_function_name, function_name_strlen+1, (void **) &fbc)==FAILURE) {
 		efree(lc_function_name);

-		if (ce->__call &&
+		if (ce->__callstatic) {
+			return zend_get_user_callstatic_function(ce, function_name_strval, function_name_strlen);
+		} else if (ce->__call &&
 		    EG(This) &&
 		    Z_OBJ_HT_P(EG(This))->get_class_entry &&
 		    instanceof_function(Z_OBJCE_P(EG(This)), ce TSRMLS_CC)) {
 			return zend_get_user_call_function(ce, function_name_strval, function_name_strlen);
-		} else if (ce->__callstatic) {
-			return zend_get_user_callstatic_function(ce, function_name_strval, function_name_strlen);
 		} else {
 	   		return NULL;
 		}

Modified: php/php-src/trunk/Zend/tests/bug45180.phpt
===================================================================
--- php/php-src/trunk/Zend/tests/bug45180.phpt	2010-03-01 23:49:01 UTC (rev 295705)
+++ php/php-src/trunk/Zend/tests/bug45180.phpt	2010-03-02 00:16:40 UTC (rev 295706)
@@ -43,11 +43,11 @@
 unicode(3) "ABC"
 __call:
 unicode(3) "ABC"
-__call:
+__callstatic:
 unicode(3) "XYZ"
-__call:
+__callstatic:
 unicode(3) "WWW"
-__call:
+__callstatic:
 unicode(3) "ABC"
 __callstatic:
 unicode(1) "A"

Modified: php/php-src/trunk/Zend/tests/bug45186.phpt
===================================================================
--- php/php-src/trunk/Zend/tests/bug45186.phpt	2010-03-01 23:49:01 UTC (rev 295705)
+++ php/php-src/trunk/Zend/tests/bug45186.phpt	2010-03-02 00:16:40 UTC (rev 295706)
@@ -35,17 +35,17 @@

 ?>
 --EXPECTF--
-__call:
+__callstatic:
 unicode(3) "ABC"
-__call:
+__callstatic:
 unicode(3) "ABC"
 __call:
 unicode(3) "xyz"
-__call:
+__callstatic:
 unicode(3) "www"
 __call:
 unicode(1) "y"
-__call:
+__callstatic:
 unicode(1) "y"
 ok
 __callstatic:

Added: php/php-src/trunk/Zend/tests/bug51176.phpt
===================================================================
--- php/php-src/trunk/Zend/tests/bug51176.phpt	                        (rev 0)
+++ php/php-src/trunk/Zend/tests/bug51176.phpt	2010-03-02 00:16:40 UTC (rev 295706)
@@ -0,0 +1,32 @@
+--TEST--
+Bug #51176 (Static calling in non-static method behaves like $this->)
+--FILE--
+<?php
+class Foo
+{
+	public function start()
+	{
+		self::bar();
+		static::bar();
+		Foo::bar();
+	}
+
+	public function __call($n, $a)
+	{
+		echo "instance\n";
+	}
+
+	public static function __callStatic($n, $a)
+	{
+		echo "static\n";
+	}
+}
+
+$foo = new Foo();
+$foo->start();
+
+?>
+--EXPECT--
+static
+static
+static


Property changes on: php/php-src/trunk/Zend/tests/bug51176.phpt
___________________________________________________________________
Added: svn:keywords
   + Id Rev Revision
Added: svn:eol-style
   + native

Modified: php/php-src/trunk/Zend/tests/call_static_003.phpt
===================================================================
--- php/php-src/trunk/Zend/tests/call_static_003.phpt	2010-03-01 23:49:01 UTC (rev 295705)
+++ php/php-src/trunk/Zend/tests/call_static_003.phpt	2010-03-02 00:16:40 UTC (rev 295706)
@@ -28,9 +28,9 @@
 --EXPECT--
 nonstatic
 unicode(6) "fOoBaR"
-nonstatic
+static
 unicode(6) "foOBAr"
-nonstatic
+static
 unicode(6) "fOOBAr"
 static
 unicode(3) "bAr"

Modified: php/php-src/trunk/Zend/tests/call_static_007.phpt
===================================================================
--- php/php-src/trunk/Zend/tests/call_static_007.phpt	2010-03-01 23:49:01 UTC (rev 295705)
+++ php/php-src/trunk/Zend/tests/call_static_007.phpt	2010-03-02 00:16:40 UTC (rev 295706)
@@ -30,5 +30,5 @@
 --EXPECT--
 __callstatic: Test
 __call: Test
-__call: Bar
+__callstatic: Bar
 __callstatic: Foo

Modified: php/php-src/trunk/Zend/zend_object_handlers.c
===================================================================
--- php/php-src/trunk/Zend/zend_object_handlers.c	2010-03-01 23:49:01 UTC (rev 295705)
+++ php/php-src/trunk/Zend/zend_object_handlers.c	2010-03-02 00:16:40 UTC (rev 295706)
@@ -962,13 +962,13 @@
 	if (!fbc && zend_u_hash_find(&ce->function_table, type, lc_function_name, function_name_strlen + 1, (void **) &fbc)==FAILURE) {
 		efree(lc_function_name.v);

-		if (ce->__call &&
+		if (ce->__callstatic) {
+			return zend_get_user_callstatic_function(ce, function_name_strval, function_name_strlen);
+		} else if (ce->__call &&
 		    EG(This) &&
 		    Z_OBJ_HT_P(EG(This))->get_class_entry &&
 		    instanceof_function(Z_OBJCE_P(EG(This)), ce TSRMLS_CC)) {
 			return zend_get_user_call_function(ce, function_name_strval, function_name_strlen);
-		} else if (ce->__callstatic) {
-			return zend_get_user_callstatic_function(ce, function_name_strval, function_name_strlen);
 		} else {
 			return NULL;
 		}
-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to