summaryrefslogtreecommitdiff
path: root/ext/spl
diff options
context:
space:
mode:
Diffstat (limited to 'ext/spl')
-rw-r--r--ext/spl/spl_array.c12
-rw-r--r--ext/spl/spl_dllist.c8
-rw-r--r--ext/spl/spl_iterators.c22
-rw-r--r--ext/spl/spl_observer.c7
4 files changed, 21 insertions, 28 deletions
diff --git a/ext/spl/spl_array.c b/ext/spl/spl_array.c
index ec28e2e4fd..e272a145e5 100644
--- a/ext/spl/spl_array.c
+++ b/ext/spl/spl_array.c
@@ -717,7 +717,7 @@ void spl_array_iterator_append(zval *object, zval *append_value TSRMLS_DC) /* {{
}
if (Z_TYPE(intern->array) == IS_OBJECT) {
- php_error_docref(NULL TSRMLS_CC, E_RECOVERABLE_ERROR, "Cannot append properties to objects, use %s::offsetSet() instead", Z_OBJCE_P(object)->name);
+ php_error_docref(NULL TSRMLS_CC, E_RECOVERABLE_ERROR, "Cannot append properties to objects, use %s::offsetSet() instead", Z_OBJCE_P(object)->name->val);
return;
}
@@ -759,11 +759,11 @@ SPL_METHOD(Array, offsetUnset)
Return a copy of the contained array */
SPL_METHOD(Array, getArrayCopy)
{
- zval *object = getThis(), *tmp;
+ zval *object = getThis();
spl_array_object *intern = (spl_array_object*)Z_OBJ_P(object);
array_init(return_value);
- zend_hash_copy(HASH_OF(return_value), spl_array_get_hash_table(intern, 0 TSRMLS_CC), (copy_ctor_func_t) zval_add_ref);
+ zend_hash_copy(Z_ARRVAL_P(return_value), spl_array_get_hash_table(intern, 0 TSRMLS_CC), (copy_ctor_func_t) zval_add_ref);
} /* }}} */
static HashTable *spl_array_get_properties(zval *object TSRMLS_DC) /* {{{ */
@@ -1683,10 +1683,8 @@ SPL_METHOD(Array, serialize)
/* done */
PHP_VAR_SERIALIZE_DESTROY(var_hash);
- if (buf.c) {
- RETVAL_STRINGL(buf.c, buf.len);
- smart_str_free(&buf);
- return;
+ if (buf.s) {
+ RETVAL_STR(buf.s);
}
zval_ptr_dtor(&members);
diff --git a/ext/spl/spl_dllist.c b/ext/spl/spl_dllist.c
index 35fa40a7c1..fbe249456e 100644
--- a/ext/spl/spl_dllist.c
+++ b/ext/spl/spl_dllist.c
@@ -317,7 +317,7 @@ static void spl_ptr_llist_shift(spl_ptr_llist *llist, zval *ret TSRMLS_DC) /* {{
static void spl_ptr_llist_copy(spl_ptr_llist *from, spl_ptr_llist *to TSRMLS_DC) /* {{{ */
{
- spl_ptr_llist_element *current = from->head, *next;
+ spl_ptr_llist_element *current = from->head, *next;
spl_ptr_llist_ctor_func ctor = from->ctor;
while (current) {
@@ -1145,10 +1145,8 @@ SPL_METHOD(SplDoublyLinkedList, serialize)
/* done */
PHP_VAR_SERIALIZE_DESTROY(var_hash);
- if (buf.c) {
- RETVAL_STRINGL(buf.c, buf.len);
- smart_str_free(&buf);
- return;
+ if (buf.s) {
+ RETURN_STR(buf.s);
} else {
RETURN_NULL();
}
diff --git a/ext/spl/spl_iterators.c b/ext/spl/spl_iterators.c
index 719344ad06..81d1ecc4bc 100644
--- a/ext/spl/spl_iterators.c
+++ b/ext/spl/spl_iterators.c
@@ -972,15 +972,15 @@ static void spl_recursive_tree_iterator_get_prefix(spl_recursive_it_object *obje
zval has_next;
int level;
- smart_str_appendl(&str, object->prefix[0].c, object->prefix[0].len);
+ smart_str_appendl(&str, object->prefix[0].s->val, object->prefix[0].s->len);
for (level = 0; level < object->level; ++level) {
zend_call_method_with_0_params(&object->iterators[level].zobject, object->iterators[level].ce, NULL, "hasnext", &has_next);
if (Z_TYPE(has_next) != IS_UNDEF) {
if (Z_LVAL(has_next)) {
- smart_str_appendl(&str, object->prefix[1].c, object->prefix[1].len);
+ smart_str_appendl(&str, object->prefix[1].s->val, object->prefix[1].s->len);
} else {
- smart_str_appendl(&str, object->prefix[2].c, object->prefix[2].len);
+ smart_str_appendl(&str, object->prefix[2].s->val, object->prefix[2].s->len);
}
zval_ptr_dtor(&has_next);
}
@@ -988,21 +988,20 @@ static void spl_recursive_tree_iterator_get_prefix(spl_recursive_it_object *obje
zend_call_method_with_0_params(&object->iterators[level].zobject, object->iterators[level].ce, NULL, "hasnext", &has_next);
if (Z_TYPE(has_next) != IS_UNDEF) {
if (Z_LVAL(has_next)) {
- smart_str_appendl(&str, object->prefix[3].c, object->prefix[3].len);
+ smart_str_appendl(&str, object->prefix[3].s->val, object->prefix[3].s->len);
} else {
- smart_str_appendl(&str, object->prefix[4].c, object->prefix[4].len);
+ smart_str_appendl(&str, object->prefix[4].s->val, object->prefix[4].s->len);
}
zval_ptr_dtor(&has_next);
}
- smart_str_appendl(&str, object->prefix[5].c, object->prefix[5].len);
+ smart_str_appendl(&str, object->prefix[5].s->val, object->prefix[5].s->len);
smart_str_0(&str);
- RETVAL_STRINGL(str.c, str.len);
- smart_str_free(&str);
+ RETURN_STR(str.s);
}
-static void spl_recursive_tree_iterator_get_entry(spl_recursive_it_object * object, zval * return_value TSRMLS_DC)
+static void spl_recursive_tree_iterator_get_entry(spl_recursive_it_object *object, zval *return_value TSRMLS_DC)
{
zend_object_iterator *iterator = object->iterators[object->level].iterator;
zval *data;
@@ -1023,9 +1022,10 @@ static void spl_recursive_tree_iterator_get_entry(spl_recursive_it_object * obje
zend_restore_error_handling(&error_handling TSRMLS_CC);
}
-static void spl_recursive_tree_iterator_get_postfix(spl_recursive_it_object * object, zval * return_value TSRMLS_DC)
+static void spl_recursive_tree_iterator_get_postfix(spl_recursive_it_object *object, zval *return_value TSRMLS_DC)
{
- RETVAL_STRINGL(object->postfix[0].c, object->postfix[0].len);
+ RETVAL_STR(object->postfix[0].s);
+ Z_ADDREF_P(return_value);
}
/* {{{ proto void RecursiveTreeIterator::__construct(RecursiveIterator|IteratorAggregate it [, int flags = RTIT_BYPASS_KEY [, int cit_flags = CIT_CATCH_GET_CHILD [, mode = RIT_SELF_FIRST ]]]) throws InvalidArgumentException
diff --git a/ext/spl/spl_observer.c b/ext/spl/spl_observer.c
index c91379bf20..411fed6812 100644
--- a/ext/spl/spl_observer.c
+++ b/ext/spl/spl_observer.c
@@ -284,7 +284,6 @@ static zend_object *spl_object_storage_clone(zval *zobject TSRMLS_DC)
{
zend_object *old_object;
zend_object *new_object;
- spl_SplObjectStorage *intern;
old_object = Z_OBJ_P(zobject);
new_object = spl_object_storage_new_ex(old_object->ce, zobject TSRMLS_CC);
@@ -763,10 +762,8 @@ SPL_METHOD(SplObjectStorage, serialize)
/* done */
PHP_VAR_SERIALIZE_DESTROY(var_hash);
- if (buf.c) {
- RETVAL_STRINGL(buf.c, buf.len);
- smart_str_free(&buf);
- return;
+ if (buf.s) {
+ RETURN_STR(buf.s);
} else {
RETURN_NULL();
}