if (hash_key->nKeyLength) {
zval *obj = va_arg(args, zval *);
zend_object_handlers *obj_ht = va_arg(args, zend_object_handlers *);
- zval member;
+ zval *member;
TSRMLS_FETCH();
if (hash_key->type == IS_STRING) {
- ZVAL_STRINGL(&member, hash_key->u.string, hash_key->nKeyLength-1, 0);
+ ZVAL_STRINGL(member, hash_key->u.string, hash_key->nKeyLength-1, 0);
} else if (hash_key->type == IS_BINARY) {
- ZVAL_BINARYL(&member, hash_key->u.string, hash_key->nKeyLength-1, 0);
+ ZVAL_BINARYL(member, hash_key->u.string, hash_key->nKeyLength-1, 0);
} else if (hash_key->type == IS_UNICODE) {
- ZVAL_UNICODEL(&member, hash_key->u.unicode, hash_key->nKeyLength-1, 0);
+ ZVAL_UNICODEL(member, hash_key->u.unicode, hash_key->nKeyLength-1, 0);
}
- obj_ht->write_property(obj, &member, *value TSRMLS_CC);
+ MAKE_STD_ZVAL(member);
+ obj_ht->write_property(obj, member, *value TSRMLS_CC);
+ zval_ptr_dtor(&member);
}
return ZEND_HASH_APPLY_KEEP;
}
ALLOC_ZVAL(q);
*q = **p;
- INIT_PZVAL(q)
+ INIT_PZVAL(q);
zval_copy_ctor(q);
zend_u_hash_add(class_type->static_members, utype, str_index, str_length, (void**)&q, sizeof(zval*), NULL);
}
ZEND_API int add_property_long_ex(zval *arg, char *key, uint key_len, long n TSRMLS_DC)
{
zval *tmp;
- zval z_key;
+ zval *z_key;
MAKE_STD_ZVAL(tmp);
ZVAL_LONG(tmp, n);
- ZVAL_STRINGL(&z_key, key, key_len-1, 0);
+
+ MAKE_STD_ZVAL(z_key);
+ ZVAL_STRINGL(z_key, key, key_len-1, 1);
- Z_OBJ_HANDLER_P(arg, write_property)(arg, &z_key, tmp TSRMLS_CC);
+ Z_OBJ_HANDLER_P(arg, write_property)(arg, z_key, tmp TSRMLS_CC);
zval_ptr_dtor(&tmp); /* write_property will add 1 to refcount */
+ zval_ptr_dtor(&z_key);
return SUCCESS;
}
ZEND_API int add_property_bool_ex(zval *arg, char *key, uint key_len, int b TSRMLS_DC)
{
zval *tmp;
- zval z_key;
+ zval *z_key;
MAKE_STD_ZVAL(tmp);
ZVAL_BOOL(tmp, b);
- ZVAL_STRINGL(&z_key, key, key_len-1, 0);
+ MAKE_STD_ZVAL(z_key);
+ ZVAL_STRINGL(z_key, key, key_len-1, 1);
- Z_OBJ_HANDLER_P(arg, write_property)(arg, &z_key, tmp TSRMLS_CC);
+ Z_OBJ_HANDLER_P(arg, write_property)(arg, z_key, tmp TSRMLS_CC);
zval_ptr_dtor(&tmp); /* write_property will add 1 to refcount */
+ zval_ptr_dtor(&z_key);
return SUCCESS;
}
ZEND_API int add_property_null_ex(zval *arg, char *key, uint key_len TSRMLS_DC)
{
zval *tmp;
- zval z_key;
+ zval *z_key;
MAKE_STD_ZVAL(tmp);
ZVAL_NULL(tmp);
- ZVAL_STRINGL(&z_key, key, key_len-1, 0);
+ MAKE_STD_ZVAL(z_key);
+ ZVAL_STRINGL(z_key, key, key_len-1, 1);
- Z_OBJ_HANDLER_P(arg, write_property)(arg, &z_key, tmp TSRMLS_CC);
+ Z_OBJ_HANDLER_P(arg, write_property)(arg, z_key, tmp TSRMLS_CC);
zval_ptr_dtor(&tmp); /* write_property will add 1 to refcount */
+ zval_ptr_dtor(&z_key);
return SUCCESS;
}
ZEND_API int add_property_resource_ex(zval *arg, char *key, uint key_len, long n TSRMLS_DC)
{
zval *tmp;
- zval z_key;
+ zval *z_key;
MAKE_STD_ZVAL(tmp);
ZVAL_RESOURCE(tmp, n);
- ZVAL_STRINGL(&z_key, key, key_len-1, 0);
- Z_OBJ_HANDLER_P(arg, write_property)(arg, &z_key, tmp TSRMLS_CC);
+ MAKE_STD_ZVAL(z_key);
+ ZVAL_STRINGL(z_key, key, key_len-1, 1);
+
+ Z_OBJ_HANDLER_P(arg, write_property)(arg, z_key, tmp TSRMLS_CC);
zval_ptr_dtor(&tmp); /* write_property will add 1 to refcount */
+ zval_ptr_dtor(&z_key);
return SUCCESS;
}
ZEND_API int add_property_double_ex(zval *arg, char *key, uint key_len, double d TSRMLS_DC)
{
zval *tmp;
- zval z_key;
+ zval *z_key;
MAKE_STD_ZVAL(tmp);
ZVAL_DOUBLE(tmp, d);
- ZVAL_STRINGL(&z_key, key, key_len-1, 0);
+
+ MAKE_STD_ZVAL(z_key);
+ ZVAL_STRINGL(z_key, key, key_len-1, 1);
- Z_OBJ_HANDLER_P(arg, write_property)(arg, &z_key, tmp TSRMLS_CC);
+ Z_OBJ_HANDLER_P(arg, write_property)(arg, z_key, tmp TSRMLS_CC);
zval_ptr_dtor(&tmp); /* write_property will add 1 to refcount */
+ zval_ptr_dtor(&z_key);
return SUCCESS;
}
ZEND_API int add_property_string_ex(zval *arg, char *key, uint key_len, char *str, int duplicate TSRMLS_DC)
{
zval *tmp;
- zval z_key;
+ zval *z_key;
MAKE_STD_ZVAL(tmp);
ZVAL_STRING(tmp, str, duplicate);
- ZVAL_STRINGL(&z_key, key, key_len-1, 0);
+ MAKE_STD_ZVAL(z_key);
+ ZVAL_STRINGL(z_key, key, key_len-1, 1);
- Z_OBJ_HANDLER_P(arg, write_property)(arg, &z_key, tmp TSRMLS_CC);
+ Z_OBJ_HANDLER_P(arg, write_property)(arg, z_key, tmp TSRMLS_CC);
zval_ptr_dtor(&tmp); /* write_property will add 1 to refcount */
+ zval_ptr_dtor(&z_key);
return SUCCESS;
}
ZEND_API int add_property_stringl_ex(zval *arg, char *key, uint key_len, char *str, uint length, int duplicate TSRMLS_DC)
{
zval *tmp;
- zval z_key;
+ zval *z_key;
MAKE_STD_ZVAL(tmp);
ZVAL_STRINGL(tmp, str, length, duplicate);
- ZVAL_STRINGL(&z_key, key, key_len-1, 0);
+ MAKE_STD_ZVAL(z_key);
+ ZVAL_STRINGL(z_key, key, key_len-1, 1);
- Z_OBJ_HANDLER_P(arg, write_property)(arg, &z_key, tmp TSRMLS_CC);
+ Z_OBJ_HANDLER_P(arg, write_property)(arg, z_key, tmp TSRMLS_CC);
zval_ptr_dtor(&tmp); /* write_property will add 1 to refcount */
+ zval_ptr_dtor(&z_key);
return SUCCESS;
}
ZEND_API int add_property_ascii_string_ex(zval *arg, char *key, uint key_len, char *str, int duplicate TSRMLS_DC)
{
zval *tmp;
- zval z_key;
+ zval *z_key;
MAKE_STD_ZVAL(tmp);
ZVAL_ASCII_STRING(tmp, str, duplicate);
- ZVAL_STRINGL(&z_key, key, key_len-1, 0);
+ MAKE_STD_ZVAL(z_key);
+ ZVAL_STRINGL(z_key, key, key_len-1, 1);
- Z_OBJ_HANDLER_P(arg, write_property)(arg, &z_key, tmp TSRMLS_CC);
+ Z_OBJ_HANDLER_P(arg, write_property)(arg, z_key, tmp TSRMLS_CC);
zval_ptr_dtor(&tmp); /* write_property will add 1 to refcount */
+ zval_ptr_dtor(&z_key);
return SUCCESS;
}
ZEND_API int add_property_ascii_stringl_ex(zval *arg, char *key, uint key_len, char *str, uint length, int duplicate TSRMLS_DC)
{
zval *tmp;
- zval z_key;
+ zval *z_key;
MAKE_STD_ZVAL(tmp);
ZVAL_ASCII_STRINGL(tmp, str, length, duplicate);
- ZVAL_STRINGL(&z_key, key, key_len-1, 0);
+ MAKE_STD_ZVAL(z_key);
+ ZVAL_STRINGL(z_key, key, key_len-1, 1);
- Z_OBJ_HANDLER_P(arg, write_property)(arg, &z_key, tmp TSRMLS_CC);
+ Z_OBJ_HANDLER_P(arg, write_property)(arg, z_key, tmp TSRMLS_CC);
zval_ptr_dtor(&tmp); /* write_property will add 1 to refcount */
+ zval_ptr_dtor(&z_key);
return SUCCESS;
}
ZEND_API int add_property_rt_string_ex(zval *arg, char *key, uint key_len, char *str, int duplicate TSRMLS_DC)
{
zval *tmp;
- zval z_key;
+ zval *z_key;
MAKE_STD_ZVAL(tmp);
ZVAL_RT_STRING(tmp, str, duplicate);
- ZVAL_STRINGL(&z_key, key, key_len-1, 0);
+ MAKE_STD_ZVAL(z_key);
+ ZVAL_STRINGL(z_key, key, key_len-1, 1);
- Z_OBJ_HANDLER_P(arg, write_property)(arg, &z_key, tmp TSRMLS_CC);
+ Z_OBJ_HANDLER_P(arg, write_property)(arg, z_key, tmp TSRMLS_CC);
zval_ptr_dtor(&tmp); /* write_property will add 1 to refcount */
+ zval_ptr_dtor(&z_key);
return SUCCESS;
}
ZEND_API int add_property_rt_stringl_ex(zval *arg, char *key, uint key_len, char *str, uint length, int duplicate TSRMLS_DC)
{
zval *tmp;
- zval z_key;
+ zval *z_key;
MAKE_STD_ZVAL(tmp);
ZVAL_RT_STRINGL(tmp, str, length, duplicate);
- ZVAL_STRINGL(&z_key, key, key_len-1, 0);
+ MAKE_STD_ZVAL(z_key);
+ ZVAL_STRINGL(z_key, key, key_len-1, 1);
- Z_OBJ_HANDLER_P(arg, write_property)(arg, &z_key, tmp TSRMLS_CC);
+ Z_OBJ_HANDLER_P(arg, write_property)(arg, z_key, tmp TSRMLS_CC);
zval_ptr_dtor(&tmp); /* write_property will add 1 to refcount */
+ zval_ptr_dtor(&z_key);
return SUCCESS;
}
ZEND_API int add_property_zval_ex(zval *arg, char *key, uint key_len, zval *value TSRMLS_DC)
{
- zval z_key;
+ zval *z_key;
- ZVAL_STRINGL(&z_key, key, key_len-1, 0);
+ ZVAL_STRINGL(z_key, key, key_len-1, 1);
- Z_OBJ_HANDLER_P(arg, write_property)(arg, &z_key, value TSRMLS_CC);
+ Z_OBJ_HANDLER_P(arg, write_property)(arg, z_key, value TSRMLS_CC);
+ zval_ptr_dtor(&z_key);
return SUCCESS;
}
ZEND_API void zend_update_property(zend_class_entry *scope, zval *object, char *name, int name_length, zval *value TSRMLS_DC)
{
- zval property;
+ zval *property;
zend_class_entry *old_scope = EG(scope);
EG(scope) = scope;
zend_error(E_CORE_ERROR, "Property %s of class %v cannot be updated", name, class_name);
}
- ZVAL_STRINGL(&property, name, name_length, 0);
- Z_OBJ_HT_P(object)->write_property(object, &property, value TSRMLS_CC);
+ MAKE_STD_ZVAL(property);
+ ZVAL_STRINGL(property, name, name_length, 1);
+ Z_OBJ_HT_P(object)->write_property(object, property, value TSRMLS_CC);
+ zval_ptr_dtor(&property);
EG(scope) = old_scope;
}