@@ -61,6 +61,7 @@ PHP_METHOD(php_user_filter, onClose)
61
61
}
62
62
63
63
static zend_class_entry * user_filter_class_entry ;
64
+ static zend_class_entry * stream_bucket_class_entry ;
64
65
65
66
static ZEND_RSRC_DTOR_FUNC (php_bucket_dtor )
66
67
{
@@ -75,6 +76,7 @@ PHP_MINIT_FUNCTION(user_filters)
75
76
{
76
77
/* init the filter class ancestor */
77
78
user_filter_class_entry = register_class_php_user_filter ();
79
+ stream_bucket_class_entry = register_class_StreamBucket ();
78
80
79
81
/* Filters will dispose of their brigades */
80
82
le_bucket_brigade = zend_register_list_destructors_ex (NULL , NULL , PHP_STREAM_BRIGADE_RES_NAME , module_number );
@@ -351,16 +353,17 @@ PHP_FUNCTION(stream_bucket_make_writeable)
351
353
RETURN_THROWS ();
352
354
}
353
355
354
- ZVAL_NULL (return_value );
355
-
356
356
if (brigade -> head && (bucket = php_stream_bucket_make_writeable (brigade -> head ))) {
357
357
ZVAL_RES (& zbucket , zend_register_resource (bucket , le_bucket ));
358
- object_init (return_value );
359
- add_property_zval ( return_value , "bucket" , & zbucket );
358
+ object_init_ex (return_value , stream_bucket_class_entry );
359
+ zend_update_property ( Z_OBJCE_P ( return_value ), Z_OBJ_P ( return_value ), ZEND_STRL ( "bucket" ) , & zbucket );
360
360
/* add_property_zval increments the refcount which is unwanted here */
361
361
zval_ptr_dtor (& zbucket );
362
- add_property_stringl (return_value , "data" , bucket -> buf , bucket -> buflen );
363
- add_property_long (return_value , "datalen" , bucket -> buflen );
362
+ zend_update_property_stringl (Z_OBJCE_P (return_value ), Z_OBJ_P (return_value ), ZEND_STRL ("data" ), bucket -> buf , bucket -> buflen );
363
+ zend_update_property_long (Z_OBJCE_P (return_value ), Z_OBJ_P (return_value ), ZEND_STRL ("datalen" ), bucket -> buflen );
364
+ zend_update_property_long (Z_OBJCE_P (return_value ), Z_OBJ_P (return_value ), ZEND_STRL ("dataLength" ), bucket -> buflen );
365
+ } else {
366
+ ZVAL_NULL (return_value );
364
367
}
365
368
}
366
369
/* }}} */
@@ -369,30 +372,32 @@ PHP_FUNCTION(stream_bucket_make_writeable)
369
372
static void php_stream_bucket_attach (int append , INTERNAL_FUNCTION_PARAMETERS )
370
373
{
371
374
zval * zbrigade , * zobject ;
372
- zval * pzbucket , * pzdata ;
375
+ zval * pzbucket , * pzdata , rv ;
373
376
php_stream_bucket_brigade * brigade ;
374
377
php_stream_bucket * bucket ;
375
378
376
379
ZEND_PARSE_PARAMETERS_START (2 , 2 )
377
380
Z_PARAM_RESOURCE (zbrigade )
378
- Z_PARAM_OBJECT (zobject )
381
+ Z_PARAM_OBJECT_OF_CLASS (zobject , stream_bucket_class_entry )
379
382
ZEND_PARSE_PARAMETERS_END ();
380
383
381
- if (NULL == ( pzbucket = zend_hash_str_find_deref ( Z_OBJPROP_P ( zobject ), "bucket" , sizeof ( "bucket" ) - 1 ))) {
382
- zend_argument_value_error ( 2 , "must be an object that has a \"bucket\" property" );
384
+ if (( brigade = ( php_stream_bucket_brigade * ) zend_fetch_resource (
385
+ Z_RES_P ( zbrigade ), PHP_STREAM_BRIGADE_RES_NAME , le_bucket_brigade )) == NULL ) {
383
386
RETURN_THROWS ();
384
387
}
385
388
386
- if (( brigade = ( php_stream_bucket_brigade * ) zend_fetch_resource (
387
- Z_RES_P ( zbrigade ), PHP_STREAM_BRIGADE_RES_NAME , le_bucket_brigade )) == NULL ) {
389
+ if (NULL == ( pzbucket = zend_read_property ( NULL , Z_OBJ_P ( zobject ), "bucket" , sizeof ( "bucket" ) - 1 , false, & rv ))) {
390
+ zend_argument_value_error ( 2 , "must be an object that has a \"bucket\" property" );
388
391
RETURN_THROWS ();
389
392
}
393
+ ZVAL_DEREF (pzbucket );
390
394
391
395
if ((bucket = (php_stream_bucket * )zend_fetch_resource_ex (pzbucket , PHP_STREAM_BUCKET_RES_NAME , le_bucket )) == NULL ) {
392
396
RETURN_THROWS ();
393
397
}
394
398
395
- if (NULL != (pzdata = zend_hash_str_find_deref (Z_OBJPROP_P (zobject ), "data" , sizeof ("data" )- 1 )) && Z_TYPE_P (pzdata ) == IS_STRING ) {
399
+ if (NULL != (pzdata = zend_read_property (NULL , Z_OBJ_P (zobject ), "data" , sizeof ("data" )- 1 , false, & rv ))) {
400
+ ZVAL_DEREF (pzdata );
396
401
if (!bucket -> own_buf ) {
397
402
bucket = php_stream_bucket_make_writeable (bucket );
398
403
}
@@ -454,12 +459,13 @@ PHP_FUNCTION(stream_bucket_new)
454
459
bucket = php_stream_bucket_new (stream , pbuffer , buffer_len , 1 , php_stream_is_persistent (stream ));
455
460
456
461
ZVAL_RES (& zbucket , zend_register_resource (bucket , le_bucket ));
457
- object_init (return_value );
458
- add_property_zval ( return_value , "bucket" , & zbucket );
462
+ object_init_ex (return_value , stream_bucket_class_entry );
463
+ zend_update_property ( Z_OBJCE_P ( return_value ), Z_OBJ_P ( return_value ), ZEND_STRL ( "bucket" ) , & zbucket );
459
464
/* add_property_zval increments the refcount which is unwanted here */
460
465
zval_ptr_dtor (& zbucket );
461
- add_property_stringl (return_value , "data" , bucket -> buf , bucket -> buflen );
462
- add_property_long (return_value , "datalen" , bucket -> buflen );
466
+ zend_update_property_stringl (Z_OBJCE_P (return_value ), Z_OBJ_P (return_value ), ZEND_STRL ("data" ), bucket -> buf , bucket -> buflen );
467
+ zend_update_property_long (Z_OBJCE_P (return_value ), Z_OBJ_P (return_value ), ZEND_STRL ("datalen" ), bucket -> buflen );
468
+ zend_update_property_long (Z_OBJCE_P (return_value ), Z_OBJ_P (return_value ), ZEND_STRL ("dataLength" ), bucket -> buflen );
463
469
}
464
470
/* }}} */
465
471
0 commit comments