andrey                                   Thu, 27 Aug 2009 12:41:14 +0000

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

Log:
Fix for bug#46614 Extended MySQLi class gives incorrect empty() result

Bug: http://bugs.php.net/46614 (Assigned) Extended MySQLi class gives incorrect 
empty() result (works in PHP_5_2 !)
      
Changed paths:
    U   php/php-src/branches/PHP_5_3/NEWS
    U   php/php-src/branches/PHP_5_3/ext/mysqli/mysqli.c
    A   php/php-src/branches/PHP_5_3/ext/mysqli/tests/bug46614.phpt
    U   php/php-src/trunk/ext/mysqli/mysqli.c
    A   php/php-src/trunk/ext/mysqli/tests/bug46614.phpt

Modified: php/php-src/branches/PHP_5_3/NEWS
===================================================================
--- php/php-src/branches/PHP_5_3/NEWS   2009-08-27 12:34:57 UTC (rev 287805)
+++ php/php-src/branches/PHP_5_3/NEWS   2009-08-27 12:41:14 UTC (rev 287806)
@@ -152,12 +152,14 @@
 - Fixed bug #47273 (Encoding bug in SoapServer->fault). (Dmitry)
 - Fixed bug #46682 (touch() afield returns different values on windows).
   (Pierre)
+- Fiexs bug #46614 (Extended MySQLi class gives incorrect empty() result).
+  (Andrey)
+- Fixed bug #46020 (with Sun Java System Web Server 7.0 on HPUX, #define HPUX).
+  (Uwe Schindler)
 - Fixed bug #45905 (imagefilledrectangle() clipping error).
   (markril at hotmail dot com, Pierre)
+- Fixed bug #45554 (Inconsistent behavior of the u format char). (Derick)
 - Fixed bug #45141 (setcookie will output expires years of >4 digits). (Ilia)
-- Fixed bug #46020 (with Sun Java System Web Server 7.0 on HPUX, #define HPUX).
-  (Uwe Schindler)
-- Fixed bug #45554 (Inconsistent behavior of the u format char). (Derick)
 - Fixed bug #44683 (popen crashes when an invalid mode is passed). (Pierre)
 - Fixed bug #43510 (stream_get_meta_data() does not return same mode as used
   in fopen). (Jani)

Modified: php/php-src/branches/PHP_5_3/ext/mysqli/mysqli.c
===================================================================
--- php/php-src/branches/PHP_5_3/ext/mysqli/mysqli.c    2009-08-27 12:34:57 UTC 
(rev 287805)
+++ php/php-src/branches/PHP_5_3/ext/mysqli/mysqli.c    2009-08-27 12:41:14 UTC 
(rev 287806)
@@ -337,7 +337,6 @@
        zval *retval;
        mysqli_object *obj;
        mysqli_prop_handler *hnd;
-       zend_object_handlers *std_hnd;
        int ret;

        ret = FAILURE;
@@ -363,7 +362,7 @@
                        retval = EG(uninitialized_zval_ptr);
                }
        } else {
-               std_hnd = zend_get_std_object_handlers();
+               zend_object_handlers * std_hnd = zend_get_std_object_handlers();
                retval = std_hnd->read_property(object, member, type TSRMLS_CC);
        }

@@ -403,7 +402,7 @@
                        zval_ptr_dtor(&value);
                }
        } else {
-               std_hnd = zend_get_std_object_handlers();
+               zend_object_handlers * std_hnd = zend_get_std_object_handlers();
                std_hnd->write_property(object, member, value TSRMLS_CC);
        }

@@ -460,6 +459,9 @@
                        default:
                                php_error_docref(NULL TSRMLS_CC, E_WARNING, 
"Invalid value for has_set_exists");
                }
+       } else {
+               zend_object_handlers * std_hnd = zend_get_std_object_handlers();
+               ret = std_hnd->has_property(object, member, has_set_exists 
TSRMLS_CC);
        }
        return ret;
 } /* }}} */

Added: php/php-src/branches/PHP_5_3/ext/mysqli/tests/bug46614.phpt
===================================================================
--- php/php-src/branches/PHP_5_3/ext/mysqli/tests/bug46614.phpt                 
        (rev 0)
+++ php/php-src/branches/PHP_5_3/ext/mysqli/tests/bug46614.phpt 2009-08-27 
12:41:14 UTC (rev 287806)
@@ -0,0 +1,32 @@
+--TEST--
+Bug #46614 (Extended MySQLi class gives incorrect empty() result)
+--SKIPIF--
+<?php
+require_once('skipif.inc');
+require_once('skipifconnectfailure.inc');
+if (!defined("MYSQLI_ASYNC")) {
+       die("skip mysqlnd only");
+}
+?>
+--FILE--
+<?php
+class MySQL_Ext extends mysqli{
+       protected $fooData = array();
+
+       public function isEmpty()
+       {
+               $this->extData[] = 'Bar';
+               return empty($this->extData);
+       }
+}
+
+
+
+       include ("connect.inc");
+       $MySQL_Ext = new MySQL_Ext($host, $user, $passwd, $db);
+
+       $isEmpty = $MySQL_Ext->isEmpty();
+       var_dump($isEmpty);
+?>
+--EXPECT--
+bool(false)

Modified: php/php-src/trunk/ext/mysqli/mysqli.c
===================================================================
--- php/php-src/trunk/ext/mysqli/mysqli.c       2009-08-27 12:34:57 UTC (rev 
287805)
+++ php/php-src/trunk/ext/mysqli/mysqli.c       2009-08-27 12:41:14 UTC (rev 
287806)
@@ -330,7 +330,6 @@
        zval *retval;
        mysqli_object *obj;
        mysqli_prop_handler *hnd;
-       zend_object_handlers *std_hnd;
        int ret;

        ret = FAILURE;
@@ -356,7 +355,7 @@
                        retval = EG(uninitialized_zval_ptr);
                }
        } else {
-               std_hnd = zend_get_std_object_handlers();
+               zend_object_handlers * std_hnd = zend_get_std_object_handlers();
                retval = std_hnd->read_property(object, member, type TSRMLS_CC);
        }

@@ -373,7 +372,6 @@
        zval tmp_member;
        mysqli_object *obj;
        mysqli_prop_handler *hnd;
-       zend_object_handlers *std_hnd;
        int ret;

        if (member->type != IS_STRING) {
@@ -396,7 +394,7 @@
                        zval_ptr_dtor(&value);
                }
        } else {
-               std_hnd = zend_get_std_object_handlers();
+               zend_object_handlers * std_hnd = zend_get_std_object_handlers();
                std_hnd->write_property(object, member, value TSRMLS_CC);
        }

@@ -461,6 +459,9 @@
                        default:
                                php_error_docref(NULL TSRMLS_CC, E_WARNING, 
"Invalid value for has_set_exists");
                }
+       } else {
+               zend_object_handlers * std_hnd = zend_get_std_object_handlers();
+               ret = std_hnd->has_property(object, member, has_set_exists 
TSRMLS_CC);
        }
        if (member == &tmp_member) {
                zval_dtor(member);

Added: php/php-src/trunk/ext/mysqli/tests/bug46614.phpt
===================================================================
--- php/php-src/trunk/ext/mysqli/tests/bug46614.phpt                            
(rev 0)
+++ php/php-src/trunk/ext/mysqli/tests/bug46614.phpt    2009-08-27 12:41:14 UTC 
(rev 287806)
@@ -0,0 +1,32 @@
+--TEST--
+Bug #46614 (Extended MySQLi class gives incorrect empty() result)
+--SKIPIF--
+<?php
+require_once('skipif.inc');
+require_once('skipifconnectfailure.inc');
+if (!defined("MYSQLI_ASYNC")) {
+       die("skip mysqlnd only");
+}
+?>
+--FILE--
+<?php
+class MySQL_Ext extends mysqli{
+       protected $fooData = array();
+
+       public function isEmpty()
+       {
+               $this->extData[] = 'Bar';
+               return empty($this->extData);
+       }
+}
+
+
+
+       include ("connect.inc");
+       $MySQL_Ext = new MySQL_Ext($host, $user, $passwd, $db);
+
+       $isEmpty = $MySQL_Ext->isEmpty();
+       var_dump($isEmpty);
+?>
+--EXPECT--
+bool(false)

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to