]> granicus.if.org Git - php/commitdiff
- Fixed bug #46108 (DateTime - Memory leak when unserializing)
authorFelipe Pena <felipe@php.net>
Tue, 7 Apr 2009 20:03:01 +0000 (20:03 +0000)
committerFelipe Pena <felipe@php.net>
Tue, 7 Apr 2009 20:03:01 +0000 (20:03 +0000)
ext/date/php_date.c

index 28c47198cc08e0bb091d8cffd321ca9c3c2cce14..caa4bed09ee5eb834bcb2a8a9c82a82f1dcfcf63 100644 (file)
@@ -2382,10 +2382,6 @@ static void date_object_free_storage_period(void *object TSRMLS_DC)
 /* Advanced Interface */
 static zval * date_instantiate(zend_class_entry *pce, zval *object TSRMLS_DC)
 {
-       if (!object) {
-               ALLOC_ZVAL(object);
-       }
-
        Z_TYPE_P(object) = IS_OBJECT;
        object_init_ex(object, pce);
        Z_SET_REFCOUNT_P(object, 1);
@@ -2575,12 +2571,14 @@ static int php_date_initialize_from_hash(zval **return_value, php_date_obj **dat
 
                                                tzi = php_date_parse_tzfile(Z_STRVAL_PP(z_timezone), DATE_TIMEZONEDB TSRMLS_CC);
 
+                                               ALLOC_INIT_ZVAL(tmp_obj);
                                                tzobj = zend_object_store_get_object(tmp_obj = date_instantiate(date_ce_timezone, tmp_obj TSRMLS_CC) TSRMLS_CC);
                                                tzobj->type = TIMELIB_ZONETYPE_ID;
                                                tzobj->tzi.tz = tzi;
                                                tzobj->initialized = 1;
 
                                                date_initialize(*dateobj, Z_STRVAL_PP(z_date), Z_STRLEN_PP(z_date), NULL, tmp_obj, 0 TSRMLS_CC);
+                                               zval_ptr_dtor(&tmp_obj);
                                                return 1;
                                }
                        }