]> granicus.if.org Git - php/commitdiff
Preserve full name of filter for use in stream_get_meta_data()
authorSara Golemon <pollita@php.net>
Thu, 13 Apr 2006 04:41:08 +0000 (04:41 +0000)
committerSara Golemon <pollita@php.net>
Thu, 13 Apr 2006 04:41:08 +0000 (04:41 +0000)
ext/standard/streamsfuncs.c
main/streams/filter.c
main/streams/php_stream_filter_api.h

index f4cf255e777b6152851ebd37e7b4924abd255c8d..e42f4a500120e728bec4107ed2199e368ecaa126 100644 (file)
@@ -470,7 +470,7 @@ PHP_FUNCTION(stream_get_meta_data)
                array_init(newval);
                
                for (filter = stream->readfilters.head; filter != NULL; filter = filter->next) {
-                       add_next_index_string(newval, (char *)filter->fops->label, 1);
+                       add_next_index_string(newval, filter->name, 1);
                }
 
                add_assoc_zval(return_value, "read_filters", newval);
@@ -483,7 +483,7 @@ PHP_FUNCTION(stream_get_meta_data)
                array_init(newval);
                
                for (filter = stream->writefilters.head; filter != NULL; filter = filter->next) {
-                       add_next_index_string(newval, (char *)filter->fops->label, 1);
+                       add_next_index_string(newval, filter->name, 1);
                }
 
                add_assoc_zval(return_value, "write_filters", newval);
index 79f3841d6f8c4aaca128f6316aada236fe04c5a2..57a780986e53e30e41a7439b7aa289b8672da197 100644 (file)
@@ -343,6 +343,8 @@ PHPAPI php_stream_filter *php_stream_filter_create(const char *filtername, zval
                else
                        php_error_docref(NULL TSRMLS_CC, E_WARNING, "unable to create or locate filter \"%s\"", filtername);
        }
+
+       filter->name = pestrdup(filtername, filter->is_persistent);
        
        return filter;
 }
@@ -365,6 +367,7 @@ PHPAPI void php_stream_filter_free(php_stream_filter *filter TSRMLS_DC)
 {
        if (filter->fops->dtor)
                filter->fops->dtor(filter TSRMLS_CC);
+       pefree(filter->name, filter->is_persistent);
        pefree(filter, filter->is_persistent);
 }
 
index a4c999a9f9e2de348dbabfb8e94551dbdd0fd640..7ff08dc2b5123be4305be65b840da6271ccfb92f 100644 (file)
@@ -145,6 +145,8 @@ struct _php_stream_filter {
        /* filters are auto_registered when they're applied */
        int rsrc_id;
        int flags;
+
+       char *name;
 };
 
 /* stack filter onto a stream */