branch off v1 as R_1_7
[m6w6/ext-http] / http_inflatestream_object.c
index acd1257e03332db22fda5dd71e296f12cbbdc960..3340e4c446cf517d9e1166a906821b05c9c5c5ec 100644 (file)
@@ -6,7 +6,7 @@
     | modification, are permitted provided that the conditions mentioned |
     | in the accompanying LICENSE file are met.                          |
     +--------------------------------------------------------------------+
-    | Copyright (c) 2004-2007, Michael Wallner <mike@php.net>            |
+    | Copyright (c) 2004-2010, Michael Wallner <mike@php.net>            |
     +--------------------------------------------------------------------+
 */
 
@@ -96,9 +96,14 @@ zend_object_value _http_inflatestream_object_new_ex(zend_class_entry *ce, http_e
                o->stream = s;
        }
 
+#ifdef ZEND_ENGINE_2_4
+       zend_object_std_init(o, ce TSRMLS_CC);
+       object_properties_init(o, ce);
+#else
        ALLOC_HASHTABLE(OBJ_PROP(o));
        zend_hash_init(OBJ_PROP(o), zend_hash_num_elements(&ce->default_properties), NULL, ZVAL_PTR_DTOR, 0);
        zend_hash_copy(OBJ_PROP(o), &ce->default_properties, (copy_ctor_func_t) zval_add_ref, NULL, sizeof(zval *));
+#endif
 
        ov.handle = putObject(http_inflatestream_object, o);
        ov.handlers = &http_inflatestream_object_handlers;
@@ -263,9 +268,11 @@ PHP_METHOD(HttpInflateStream, finish)
                        STR_FREE(decoded);
                        updated_len += decoded_len;
                        RETVAL_STRINGL(updated, updated_len, 0);
-               } else {
+               } else if (decoded) {
                        STR_FREE(updated);
                        RETVAL_STRINGL(decoded, decoded_len, 0);
+               } else {
+                       RETVAL_NULL();
                }
        } else {
                STR_FREE(updated);