]> granicus.if.org Git - php/commitdiff
fixed bug #29656 (segfault on result and statement properties)
authorGeorg Richter <georg@php.net>
Fri, 13 Aug 2004 16:25:29 +0000 (16:25 +0000)
committerGeorg Richter <georg@php.net>
Fri, 13 Aug 2004 16:25:29 +0000 (16:25 +0000)
ext/mysqli/mysqli.c

index 31dad7723379aa31943c59a919c5b43e8a207efe..154c24924684a8a59ebfb196bc71c2bf48d9062a 100644 (file)
@@ -200,11 +200,22 @@ zval *mysqli_read_property(zval *object, zval *member, int type TSRMLS_DC)
                ret = zend_hash_find(obj->prop_handler, Z_STRVAL_P(member), Z_STRLEN_P(member)+1, (void **) &hnd);
        }
        if (ret == SUCCESS) {
-               /* check if connection is still valid */
-               if (!obj->ptr ||
-                   !((MYSQL *)((MY_MYSQL *)((MYSQLI_RESOURCE *)(obj->ptr))->ptr)->mysql)->thread_id) {
-                       retval = EG(uninitialized_zval_ptr);
-                       return(retval);
+
+               /* check if mysqli object is still valid */
+               if (!strcmp(obj->zo.ce->name, "mysqli")) {
+                       if (!obj->ptr ||
+                       !((MYSQL *)((MY_MYSQL *)((MYSQLI_RESOURCE *)(obj->ptr))->ptr)->mysql)->thread_id) {
+                               retval = EG(uninitialized_zval_ptr);
+                               return(retval);
+                       }
+               } else
+               /* check if stmt object is still valid */
+               if (!strcmp(obj->zo.ce->name, "mysqli_stmt")) {
+                       if (!obj->ptr ||
+                       !((MYSQL_STMT *)((MY_STMT *)((MYSQLI_RESOURCE *)(obj->ptr))->ptr)->stmt)->mysql) {
+                               retval = EG(uninitialized_zval_ptr);
+                               return(retval);
+                       }
                }
 
                ret = hnd->read_func(obj, &retval TSRMLS_CC);