}
if (result) {
- Z_ADDREF_P(result);
+ if (Z_REFCOUNTED_P(result)) {
+ Z_ADDREF_P(result);
+ }
return SUCCESS;
} else {
return FAILURE;
new_op_array = NULL;
zend_file_handle_dtor(&file_handle TSRMLS_CC);
}
- STR_FREE(opened_path);
+ STR_RELEASE(opened_path);
if (new_op_array) {
EG(active_op_array) = new_op_array;
if (!EG(active_symbol_table)) {
zend_error(E_WARNING, "Modification of ArrayObject during sorting is prohibited");
return;
}
- Z_ADDREF_P(value);
+ if (Z_REFCOUNTED_P(value)) {
+ Z_ADDREF_P(value);
+ }
zend_hash_next_index_insert(ht, value);
return;
}
- switch(Z_TYPE_P(offset)) {
- case IS_STRING:
- ht = spl_array_get_hash_table(intern, 0 TSRMLS_CC);
- if (ht->nApplyCount > 0) {
- zend_error(E_WARNING, "Modification of ArrayObject during sorting is prohibited");
- return;
- }
+
+ if (Z_REFCOUNTED_P(value)) {
Z_ADDREF_P(value);
- zend_symtable_update(ht, Z_STR_P(offset), value);
- return;
- case IS_DOUBLE:
- case IS_RESOURCE:
- case IS_BOOL:
- case IS_LONG:
- ht = spl_array_get_hash_table(intern, 0 TSRMLS_CC);
- if (ht->nApplyCount > 0) {
- zend_error(E_WARNING, "Modification of ArrayObject during sorting is prohibited");
+ }
+ switch (Z_TYPE_P(offset)) {
+ case IS_STRING:
+ ht = spl_array_get_hash_table(intern, 0 TSRMLS_CC);
+ if (ht->nApplyCount > 0) {
+ zend_error(E_WARNING, "Modification of ArrayObject during sorting is prohibited");
+ return;
+ }
+ zend_symtable_update(ht, Z_STR_P(offset), value);
return;
- }
- if (offset->type == IS_DOUBLE) {
- index = (long)Z_DVAL_P(offset);
- } else {
- index = Z_LVAL_P(offset);
- }
- Z_ADDREF_P(value);
- zend_hash_index_update(ht, index, value);
- return;
- case IS_NULL:
- ht = spl_array_get_hash_table(intern, 0 TSRMLS_CC);
- if (ht->nApplyCount > 0) {
- zend_error(E_WARNING, "Modification of ArrayObject during sorting is prohibited");
+ case IS_DOUBLE:
+ case IS_RESOURCE:
+ case IS_BOOL:
+ case IS_LONG:
+ ht = spl_array_get_hash_table(intern, 0 TSRMLS_CC);
+ if (ht->nApplyCount > 0) {
+ zend_error(E_WARNING, "Modification of ArrayObject during sorting is prohibited");
+ return;
+ }
+ if (offset->type == IS_DOUBLE) {
+ index = (long)Z_DVAL_P(offset);
+ } else {
+ index = Z_LVAL_P(offset);
+ }
+ zend_hash_index_update(ht, index, value);
+ return;
+ case IS_NULL:
+ ht = spl_array_get_hash_table(intern, 0 TSRMLS_CC);
+ if (ht->nApplyCount > 0) {
+ zend_error(E_WARNING, "Modification of ArrayObject during sorting is prohibited");
+ return;
+ }
+ zend_hash_next_index_insert(ht, value);
+ return;
+ default:
+ zend_error(E_WARNING, "Illegal offset type");
return;
- }
- Z_ADDREF_P(value);
- zend_hash_next_index_insert(ht, value);
- return;
- default:
- zend_error(E_WARNING, "Illegal offset type");
- return;
}
} /* }}} */
static void spl_ptr_llist_zval_ctor(spl_ptr_llist_element *elem TSRMLS_DC) { /* {{{ */
if (Z_REFCOUNTED(elem->data)) {
- Z_ADDREF_P(&elem->data);
+ Z_ADDREF(elem->data);
}
}
/* }}} */
next = current->next;
add_index_zval(&dllist_array, i, ¤t->data);
- Z_ADDREF_P(¤t->data);
+ if (Z_REFCOUNTED(current->data)) {
+ Z_ADDREF(current->data);
+ }
i++;
current = next;
return;
}
- Z_ADDREF_P(value);
+ if (Z_REFCOUNTED_P(value)) {
+ Z_ADDREF_P(value);
+ }
if (index == intern->llist->count) {
/* If index is the last entry+1 then we do a push because we're not inserting before any entry */
spl_ptr_llist_push(intern->llist, value TSRMLS_CC);
for (i = 0; i < intern->array->size; i++) {
if (!ZVAL_IS_UNDEF(&intern->array->elements[i])) {
zend_hash_index_update(ht, i, &intern->array->elements[i]);
- Z_ADDREF_P(&intern->array->elements[i]);
+ if (Z_REFCOUNTED(intern->array->elements[i])){
+ Z_ADDREF(intern->array->elements[i]);
+ }
} else {
zend_hash_index_update(ht, i, &EG(uninitialized_zval));
}
spl_fixedarray_init(intern->array, size TSRMLS_CC);
for (zend_hash_internal_pointer_reset_ex(intern_ht, &ptr); (data = zend_hash_get_current_data_ex(intern_ht, &ptr)) != NULL; zend_hash_move_forward_ex(intern_ht, &ptr)) {
- Z_ADDREF_P(data);
+ if (Z_REFCOUNTED_P(data)) {
+ Z_ADDREF_P(data);
+ }
ZVAL_COPY_VALUE(&intern->array->elements[index++], data);
}
for (; i < intern->array->size; i++) {
if (!ZVAL_IS_UNDEF(&intern->array->elements[i])) {
zend_hash_index_update(Z_ARRVAL_P(return_value), i, &intern->array->elements[i]);
- Z_ADDREF_P(&intern->array->elements[i]);
+ if (Z_REFCOUNTED(intern->array->elements[i])) {
+ Z_ADDREF(intern->array->elements[i]);
+ }
} else {
zend_hash_index_update(Z_ARRVAL_P(return_value), i, &EG(uninitialized_zval));
- Z_ADDREF_P(&EG(uninitialized_zval));
}
}
}
return NULL;
}
- Z_ADDREF_P(object);
-
iterator = emalloc(sizeof(spl_fixedarray_it));
zend_iterator_init((zend_object_iterator*)iterator TSRMLS_CC);
/* }}} */
static void spl_ptr_heap_zval_ctor(zval *elem TSRMLS_DC) { /* {{{ */
- Z_ADDREF_P(elem);
+ if (Z_REFCOUNTED_P(elem)) {
+ Z_ADDREF_P(elem);
+ }
}
/* }}} */
int i;
intern->heap = spl_ptr_heap_clone(other->heap TSRMLS_CC);
for (i = 0; i < intern->heap->count; ++i) {
- if (!ZVAL_IS_UNDEF(&intern->heap->elements[i])) {
- Z_ADDREF_P(&intern->heap->elements[i]);
+ if (Z_REFCOUNTED(intern->heap->elements[i])) {
+ Z_ADDREF(intern->heap->elements[i]);
}
}
} else {
for (i = 0; i < intern->heap->count; ++i) {
add_index_zval(&heap_array, i, &intern->heap->elements[i]);
- Z_ADDREF_P(&intern->heap->elements[i]);
+ if (Z_REFCOUNTED(intern->heap->elements[i])) {
+ Z_ADDREF(intern->heap->elements[i]);
+ }
}
pnstr = spl_gen_private_prop_name(ce, "heap", sizeof("heap")-1 TSRMLS_CC);
return;
}
- Z_ADDREF_P(value_out);
+ if (Z_REFCOUNTED_P(value_out)) {
+ Z_ADDREF_P(value_out);
+ }
zval_ptr_dtor(value);
RETURN_ZVAL(value_out, 1, 1);