Get rid of ZVAL_ZVAL() macro usages. Replace them with more clear and optimal equialent sequences.

This commit is contained in:
Dmitry Stogov 2015-07-01 02:05:21 +03:00
parent 324d5ecb7e
commit 53403fe56d
9 changed files with 109 additions and 48 deletions

View file

@ -78,7 +78,8 @@ static void curlfile_get_property(char *name, INTERNAL_FUNCTION_PARAMETERS)
return;
}
res = zend_read_property(curl_CURLFile_class, getThis(), name, strlen(name), 1, &rv);
RETURN_ZVAL(res, 1, 0);
ZVAL_DEREF(res);
ZVAL_COPY(return_value, res);
}
static void curlfile_set_property(char *name, INTERNAL_FUNCTION_PARAMETERS)

View file

@ -226,7 +226,8 @@ static php_stream * phar_wrapper_open_url(php_stream_wrapper *wrapper, const cha
}
metadata = pzoption;
ZVAL_ZVAL(&idata->internal_file->metadata, metadata, 1, 0);
ZVAL_DEREF(metadata);
ZVAL_COPY(&idata->internal_file->metadata, metadata);
idata->phar->is_modified = 1;
}
}

View file

@ -710,7 +710,8 @@ SPL_METHOD(Array, offsetGet)
}
value = spl_array_read_dimension_ex(0, getThis(), index, BP_VAR_R, return_value);
if (value != return_value) {
RETURN_ZVAL(value, 1, 0);
ZVAL_DEREF(value);
ZVAL_COPY(return_value, value);
}
} /* }}} */
@ -1513,7 +1514,8 @@ SPL_METHOD(Array, current)
return;
}
}
RETVAL_ZVAL(entry, 1, 0);
ZVAL_DEREF(entry);
ZVAL_COPY(return_value, entry);
}
/* }}} */
@ -1630,7 +1632,9 @@ SPL_METHOD(Array, getChildren)
return;
}
if (instanceof_function(Z_OBJCE_P(entry), Z_OBJCE_P(getThis()))) {
RETURN_ZVAL(entry, 1, 0);
ZVAL_OBJ(return_value, Z_OBJ_P(entry));
Z_ADDREF_P(return_value);
return;
}
}

View file

@ -786,7 +786,8 @@ SPL_METHOD(DirectoryIterator, current)
if (zend_parse_parameters_none() == FAILURE) {
return;
}
RETURN_ZVAL(getThis(), 1, 0);
ZVAL_OBJ(return_value, Z_OBJ_P(getThis()));
Z_ADDREF_P(return_value);
}
/* }}} */
@ -1080,7 +1081,8 @@ SPL_METHOD(FilesystemIterator, current)
spl_filesystem_object_get_file_name(intern);
spl_filesystem_object_create_type(0, intern, SPL_FS_INFO, NULL, return_value);
} else {
RETURN_ZVAL(getThis(), 1, 0);
ZVAL_OBJ(return_value, Z_OBJ_P(getThis()));
Z_ADDREF_P(return_value);
/*RETURN_STRING(intern->u.dir.entry.d_name, 1);*/
}
}
@ -2123,6 +2125,7 @@ static int spl_filesystem_file_call(spl_filesystem_object *intern, zend_function
static int spl_filesystem_file_read_csv(spl_filesystem_object *intern, char delimiter, char enclosure, char escape, zval *return_value) /* {{{ */
{
int ret = SUCCESS;
zval *value;
do {
ret = spl_filesystem_file_read(intern, 1);
@ -2139,11 +2142,10 @@ static int spl_filesystem_file_read_csv(spl_filesystem_object *intern, char deli
php_fgetcsv(intern->u.file.stream, delimiter, enclosure, escape, buf_len, buf, &intern->u.file.current_zval);
if (return_value) {
if (Z_TYPE_P(return_value) != IS_NULL) {
zval_ptr_dtor(return_value);
ZVAL_NULL(return_value);
}
ZVAL_ZVAL(return_value, &intern->u.file.current_zval, 1, 0);
zval_ptr_dtor(return_value);
value = &intern->u.file.current_zval;
ZVAL_DEREF(value);
ZVAL_COPY(return_value, value);
}
}
return ret;
@ -2177,7 +2179,10 @@ static int spl_filesystem_file_read_line_ex(zval * this_ptr, spl_filesystem_obje
intern->u.file.current_line = estrndup(Z_STRVAL(retval), Z_STRLEN(retval));
intern->u.file.current_line_len = Z_STRLEN(retval);
} else {
ZVAL_ZVAL(&intern->u.file.current_zval, &retval, 1, 0);
zval *value = &retval;
ZVAL_DEREF(value);
ZVAL_COPY(&intern->u.file.current_zval, value);
}
zval_ptr_dtor(&retval);
return SUCCESS;
@ -2438,7 +2443,11 @@ SPL_METHOD(SplFileObject, current)
if (intern->u.file.current_line && (!SPL_HAS_FLAG(intern->flags, SPL_FILE_OBJECT_READ_CSV) || Z_ISUNDEF(intern->u.file.current_zval))) {
RETURN_STRINGL(intern->u.file.current_line, intern->u.file.current_line_len);
} else if (!Z_ISUNDEF(intern->u.file.current_zval)) {
RETURN_ZVAL(&intern->u.file.current_zval, 1, 0);
zval *value = &intern->u.file.current_zval;
ZVAL_DEREF(value);
ZVAL_COPY(return_value, value);
return;
}
RETURN_FALSE;
} /* }}} */

View file

@ -654,7 +654,8 @@ SPL_METHOD(SplDoublyLinkedList, top)
return;
}
RETURN_ZVAL(value, 1, 0);
ZVAL_DEREF(value);
ZVAL_COPY(return_value, value);
}
/* }}} */
@ -677,7 +678,8 @@ SPL_METHOD(SplDoublyLinkedList, bottom)
return;
}
RETURN_ZVAL(value, 1, 0);
ZVAL_DEREF(value);
ZVAL_COPY(return_value, value);
}
/* }}} */
@ -795,10 +797,12 @@ SPL_METHOD(SplDoublyLinkedList, offsetGet)
element = spl_ptr_llist_offset(intern->llist, index, intern->flags & SPL_DLLIST_IT_LIFO);
if (element != NULL) {
RETURN_ZVAL(&element->data, 1, 0);
zval *value = &element->data;
ZVAL_DEREF(value);
ZVAL_COPY(return_value, value);
} else {
zend_throw_exception(spl_ce_OutOfRangeException, "Offset invalid", 0);
return;
}
} /* }}} */
@ -1117,7 +1121,10 @@ SPL_METHOD(SplDoublyLinkedList, current)
if (element == NULL || Z_ISUNDEF(element->data)) {
RETURN_NULL();
} else {
RETURN_ZVAL(&element->data, 1, 0);
zval *value = &element->data;
ZVAL_DEREF(value);
ZVAL_COPY(return_value, value);
}
}
/* }}} */

View file

@ -805,9 +805,11 @@ SPL_METHOD(SplFixedArray, offsetGet)
value = spl_fixedarray_object_read_dimension_helper(intern, zindex);
if (value) {
RETURN_ZVAL(value, 1, 0);
ZVAL_DEREF(value);
ZVAL_COPY(return_value, value);
} else {
RETURN_NULL();
}
RETURN_NULL();
} /* }}} */
/* {{{ proto void SplFixedArray::offsetSet(mixed $index, mixed $newval)
@ -1001,9 +1003,11 @@ SPL_METHOD(SplFixedArray, current)
zval_ptr_dtor(&zindex);
if (value) {
RETURN_ZVAL(value, 1, 0);
ZVAL_DEREF(value);
ZVAL_COPY(return_value, value);
} else {
RETURN_NULL();
}
RETURN_NULL();
}
/* }}} */

View file

@ -694,7 +694,8 @@ SPL_METHOD(SplPriorityQueue, extract)
return;
}
RETVAL_ZVAL(value_out, 1, 0);
ZVAL_DEREF(value_out);
ZVAL_COPY(return_value, value_out);
zval_ptr_dtor(&value);
}
/* }}} */
@ -731,7 +732,8 @@ SPL_METHOD(SplPriorityQueue, top)
return;
}
RETURN_ZVAL(value_out, 1, 0);
ZVAL_DEREF(value_out);
ZVAL_COPY(return_value, value_out);
}
/* }}} */
@ -844,7 +846,8 @@ SPL_METHOD(SplHeap, top)
return;
}
RETURN_ZVAL(value, 1, 0);
ZVAL_DEREF(value);
ZVAL_COPY(return_value, value);
}
/* }}} */
@ -1032,7 +1035,8 @@ SPL_METHOD(SplHeap, current)
if (!intern->heap->count || Z_ISUNDEF_P(element)) {
RETURN_NULL();
} else {
RETURN_ZVAL(element, 1, 0);
ZVAL_DEREF(element);
ZVAL_COPY(return_value, element);
}
}
/* }}} */
@ -1058,7 +1062,8 @@ SPL_METHOD(SplPriorityQueue, current)
RETURN_NULL();
}
RETURN_ZVAL(data, 1, 0);
ZVAL_DEREF(data);
ZVAL_COPY(return_value, data);
}
}
/* }}} */

View file

@ -663,7 +663,8 @@ SPL_METHOD(RecursiveIteratorIterator, current)
data = iterator->funcs->get_current_data(iterator);
if (data) {
RETURN_ZVAL(data, 1, 0);
ZVAL_DEREF(data);
ZVAL_COPY(return_value, data);
}
} /* }}} */
@ -699,6 +700,7 @@ SPL_METHOD(RecursiveIteratorIterator, getSubIterator)
{
spl_recursive_it_object *object = Z_SPLRECURSIVE_IT_P(getThis());
zend_long level = object->level;
zval *value;
if (zend_parse_parameters(ZEND_NUM_ARGS(), "|l", &level) == FAILURE) {
return;
@ -713,7 +715,9 @@ SPL_METHOD(RecursiveIteratorIterator, getSubIterator)
return;
}
RETURN_ZVAL(&object->iterators[level].zobject, 1, 0);
value = &object->iterators[level].zobject;
ZVAL_DEREF(value);
ZVAL_COPY(return_value, value);
} /* }}} */
/* {{{ proto RecursiveIterator RecursiveIteratorIterator::getInnerIterator()
@ -729,7 +733,8 @@ SPL_METHOD(RecursiveIteratorIterator, getInnerIterator)
SPL_FETCH_SUB_ELEMENT_ADDR(zobject, object, zobject);
RETURN_ZVAL(zobject, 1, 0);
ZVAL_DEREF(zobject);
ZVAL_COPY(return_value, zobject);
} /* }}} */
/* {{{ proto RecursiveIterator RecursiveIteratorIterator::beginIteration()
@ -1210,7 +1215,9 @@ SPL_METHOD(RecursiveTreeIterator, current)
SPL_FETCH_SUB_ITERATOR(iterator, object);
data = iterator->funcs->get_current_data(iterator);
if (data) {
RETURN_ZVAL(data, 1, 0);
ZVAL_DEREF(data);
ZVAL_COPY(return_value, data);
return;
} else {
RETURN_NULL();
}
@ -1625,7 +1632,10 @@ SPL_METHOD(dual_it, getInnerIterator)
SPL_FETCH_AND_CHECK_DUAL_IT(intern, getThis());
if (!Z_ISUNDEF(intern->inner.zobject)) {
RETVAL_ZVAL(&intern->inner.zobject, 1, 0);
zval *value = &intern->inner.zobject;
ZVAL_DEREF(value);
ZVAL_COPY(return_value, value);
} else {
RETURN_NULL();
}
@ -1772,9 +1782,13 @@ SPL_METHOD(dual_it, key)
SPL_FETCH_AND_CHECK_DUAL_IT(intern, getThis());
if (Z_TYPE(intern->current.key) != IS_UNDEF) {
RETURN_ZVAL(&intern->current.key, 1, 0);
zval *value = &intern->current.key;
ZVAL_DEREF(value);
ZVAL_COPY(return_value, value);
} else {
RETURN_NULL();
}
RETURN_NULL();
} /* }}} */
/* {{{ proto mixed FilterIterator::current()
@ -1796,7 +1810,10 @@ SPL_METHOD(dual_it, current)
SPL_FETCH_AND_CHECK_DUAL_IT(intern, getThis());
if (Z_TYPE(intern->current.data) != IS_UNDEF) {
RETVAL_ZVAL(&intern->current.data, 1, 0);
zval *value = &intern->current.data;
ZVAL_DEREF(value);
ZVAL_COPY(return_value, value);
} else {
RETURN_NULL();
}
@ -2629,14 +2646,13 @@ static inline void spl_caching_it_next(spl_dual_it_object *intern)
intern->u.caching.flags |= CIT_VALID;
/* Full cache ? */
if (intern->u.caching.flags & CIT_FULL_CACHE) {
zval zcacheval;
zval *key = &intern->current.key;
zval *data = &intern->current.data;
ZVAL_ZVAL(&zcacheval, &intern->current.data, 1, 0);
array_set_zval_key(HASH_OF(&intern->u.caching.zcache), key, &zcacheval);
zval_ptr_dtor(&zcacheval);
ZVAL_DEREF(data);
Z_TRY_ADDREF_P(data);
array_set_zval_key(HASH_OF(&intern->u.caching.zcache), key, data);
zval_ptr_dtor(data);
}
/* Recursion ? */
if (intern->dit_type == DIT_RecursiveCachingIterator) {
@ -2849,7 +2865,8 @@ SPL_METHOD(CachingIterator, offsetGet)
return;
}
RETURN_ZVAL(value, 1, 0);
ZVAL_DEREF(value);
ZVAL_COPY(return_value, value);
}
/* }}} */
@ -2902,6 +2919,7 @@ SPL_METHOD(CachingIterator, offsetExists)
SPL_METHOD(CachingIterator, getCache)
{
spl_dual_it_object *intern;
zval *value;
if (zend_parse_parameters_none() == FAILURE) {
return;
@ -2914,7 +2932,9 @@ SPL_METHOD(CachingIterator, getCache)
return;
}
RETURN_ZVAL(&intern->u.caching.zcache, 1, 0);
value = &intern->u.caching.zcache;
ZVAL_DEREF(value);
ZVAL_COPY(return_value, value);
}
/* }}} */
@ -3062,7 +3082,10 @@ SPL_METHOD(RecursiveCachingIterator, getChildren)
SPL_FETCH_AND_CHECK_DUAL_IT(intern, getThis());
if (Z_TYPE(intern->u.caching.zchildren) != IS_UNDEF) {
RETURN_ZVAL(&intern->u.caching.zchildren, 1, 0);
zval *value = &intern->u.caching.zchildren;
ZVAL_DEREF(value);
ZVAL_COPY(return_value, value);
} else {
RETURN_NULL();
}
@ -3166,7 +3189,8 @@ SPL_METHOD(NoRewindIterator, current)
SPL_FETCH_AND_CHECK_DUAL_IT(intern, getThis());
data = intern->inner.iterator->funcs->get_current_data(intern->inner.iterator);
if (data) {
RETURN_ZVAL(data, 1, 0);
ZVAL_DEREF(data);
ZVAL_COPY(return_value, data);
}
} /* }}} */
@ -3439,6 +3463,7 @@ SPL_METHOD(AppendIterator, getIteratorIndex)
SPL_METHOD(AppendIterator, getArrayIterator)
{
spl_dual_it_object *intern;
zval *value;
if (zend_parse_parameters_none() == FAILURE) {
return;
@ -3446,7 +3471,9 @@ SPL_METHOD(AppendIterator, getArrayIterator)
SPL_FETCH_AND_CHECK_DUAL_IT(intern, getThis());
RETURN_ZVAL(&intern->u.append.zarrayit, 1, 0);
value = &intern->u.append.zarrayit;
ZVAL_DEREF(value);
ZVAL_COPY(return_value, value);
} /* }}} */
ZEND_BEGIN_ARG_INFO(arginfo_append_it_append, 0)

View file

@ -485,7 +485,10 @@ SPL_METHOD(SplObjectStorage, offsetGet)
if (!element) {
zend_throw_exception_ex(spl_ce_UnexpectedValueException, 0, "Object not found");
} else {
RETURN_ZVAL(&element->inf, 1, 0);
zval *value = &element->inf;
ZVAL_DEREF(value);
ZVAL_COPY(return_value, value);
}
} /* }}} */