}
if (filter) {
- RETURN_RESOURCE(ZEND_REGISTER_RESOURCE(NULL, filter, php_file_le_stream_filter()));
+ RETURN_RESOURCE(filter->rsrc_id = ZEND_REGISTER_RESOURCE(NULL, filter, php_file_le_stream_filter()));
} else {
RETURN_FALSE;
}
} else {
filter->chain->tail = filter->prev;
}
+
+ if (filter->rsrc_id > 0) {
+ zend_list_delete(filter->rsrc_id);
+ }
+
if (call_dtor) {
php_stream_filter_free(filter TSRMLS_CC);
return NULL;
/* buffered buckets */
php_stream_bucket_brigade buffer;
+
+ /* filters are auto_registered when they're applied */
+ int rsrc_id;
};
/* stack filter onto a stream */