]> granicus.if.org Git - php/commitdiff
Make file_get_wrapper_data return the underlying PHP object for
authorWez Furlong <wez@php.net>
Tue, 19 Mar 2002 13:42:25 +0000 (13:42 +0000)
committerWez Furlong <wez@php.net>
Tue, 19 Mar 2002 13:42:25 +0000 (13:42 +0000)
user-space streams.

main/streams.c
main/user_streams.c

index a4f3d6ee21ebc01bbb07dad4fcc7c8a1f3add852..2cdbd6f27a3f40b7050fc06322806a2496e8fdd9 100755 (executable)
@@ -120,7 +120,7 @@ PHPAPI int _php_stream_free(php_stream *stream, int close_options TSRMLS_DC) /*
                }
 
                if (stream->wrapperdata) {
-                       FREE_ZVAL(stream->wrapperdata);
+                       zval_ptr_dtor(&stream->wrapperdata);
                        stream->wrapperdata = NULL;
                }
 
index 164639e1fd30b96157a9833e4d8265c0b6d4c66e..b5d3701e20f60ab43c6570b9fe1dbb77ac99aee2 100644 (file)
@@ -152,6 +152,10 @@ static php_stream *user_wrapper_factory(char *filename, char *mode, int options,
                if (Z_TYPE_P(zopened) == IS_STRING && opened_path) {
                        *opened_path = estrndup(Z_STRVAL_P(zopened), Z_STRLEN_P(zopened));
                }
+
+               /* set wrapper data to be a reference to our object */
+               stream->wrapperdata = us->object;
+               zval_add_ref(&stream->wrapperdata);
        } else {
                /* destroy the object */
                zval_ptr_dtor(&us->object);