@@ -162,6 +162,9 @@ static zend_class_entry* soap_header_class_entry;
162
162
static zend_class_entry * soap_param_class_entry ;
163
163
zend_class_entry * soap_var_class_entry ;
164
164
165
+ #define Z_PARAM_NAME_P (zv ) OBJ_PROP_NUM(Z_OBJ_P(zv), 0)
166
+ #define Z_PARAM_DATA_P (zv ) OBJ_PROP_NUM(Z_OBJ_P(zv), 1)
167
+
165
168
ZEND_DECLARE_MODULE_GLOBALS (soap )
166
169
167
170
static void (* old_error_handler )(int , zend_string * , const uint32_t , zend_string * );
@@ -499,22 +502,21 @@ PHP_MINFO_FUNCTION(soap)
499
502
PHP_METHOD (SoapParam , __construct )
500
503
{
501
504
zval * data ;
502
- char * name ;
503
- size_t name_length ;
505
+ zend_string * name ;
504
506
zval * this_ptr ;
505
507
506
- if (zend_parse_parameters (ZEND_NUM_ARGS (), "zs " , & data , & name , & name_length ) == FAILURE ) {
508
+ if (zend_parse_parameters (ZEND_NUM_ARGS (), "zS " , & data , & name ) == FAILURE ) {
507
509
RETURN_THROWS ();
508
510
}
509
511
510
- if (name_length == 0 ) {
512
+ if (ZSTR_LEN ( name ) == 0 ) {
511
513
zend_argument_value_error (2 , "cannot be empty" );
512
514
RETURN_THROWS ();
513
515
}
514
516
515
517
this_ptr = ZEND_THIS ;
516
- add_property_stringl ( this_ptr , "param_name" , name , name_length );
517
- add_property_zval ( this_ptr , "param_data" , data );
518
+ ZVAL_STR_COPY ( Z_PARAM_NAME_P ( this_ptr ), name );
519
+ ZVAL_COPY ( Z_PARAM_DATA_P ( this_ptr ) , data );
518
520
}
519
521
/* }}} */
520
522
@@ -4064,15 +4066,12 @@ static xmlNodePtr serialize_parameter(sdlParamPtr param, zval *param_val, int in
4064
4066
xmlNodePtr xmlParam ;
4065
4067
char paramNameBuf [10 ];
4066
4068
4067
- if (param_val &&
4068
- Z_TYPE_P (param_val ) == IS_OBJECT &&
4069
- Z_OBJCE_P (param_val ) == soap_param_class_entry ) {
4070
- zval * param_name ;
4071
- zval * param_data ;
4072
-
4073
- if ((param_name = zend_hash_str_find (Z_OBJPROP_P (param_val ), "param_name" , sizeof ("param_name" )- 1 )) != NULL &&
4074
- Z_TYPE_P (param_name ) == IS_STRING &&
4075
- (param_data = zend_hash_str_find (Z_OBJPROP_P (param_val ), "param_data" , sizeof ("param_data" )- 1 )) != NULL ) {
4069
+ if (param_val && Z_TYPE_P (param_val ) == IS_OBJECT
4070
+ && Z_OBJCE_P (param_val ) == soap_param_class_entry ) {
4071
+ zval * param_name = Z_PARAM_NAME_P (param_val );
4072
+ zval * param_data = Z_PARAM_DATA_P (param_val );
4073
+ ZVAL_DEREF (param_name );
4074
+ if (Z_TYPE_P (param_name ) == IS_STRING && Z_TYPE_P (param_data ) != IS_UNDEF ) {
4076
4075
param_val = param_data ;
4077
4076
name = Z_STRVAL_P (param_name );
4078
4077
}
0 commit comments