}
break;
case ZEND_AST_ARRAY:
- array_init(result);
{
uint32_t i;
zend_ast_list *list = zend_ast_get_list(ast);
+
+ if (!list->children) {
+ ZVAL_EMPTY_ARRAY(result);
+ break;
+ }
+ array_init(result);
for (i = 0; i < list->children; i++) {
zend_ast *elem = list->child[i];
if (elem->child[1]) {
arg_count = ZEND_CALL_NUM_ARGS(ex);
- array_init_size(return_value, arg_count);
if (arg_count) {
+ array_init_size(return_value, arg_count);
first_extra_arg = ex->func->op_array.num_args;
zend_hash_real_init(Z_ARRVAL_P(return_value), 1);
ZEND_HASH_FILL_PACKED(Z_ARRVAL_P(return_value)) {
}
} ZEND_HASH_FILL_END();
Z_ARRVAL_P(return_value)->nNumOfElements = arg_count;
+ } else {
+ ZVAL_EMPTY_ARRAY(return_value);
}
}
/* }}} */
{
uint32_t num_args = ZEND_CALL_NUM_ARGS(call);
- array_init_size(arg_array, num_args);
if (num_args) {
uint32_t i = 0;
zval *p = ZEND_CALL_ARG(call, 1);
+ array_init_size(arg_array, num_args);
zend_hash_real_init(Z_ARRVAL_P(arg_array), 1);
ZEND_HASH_FILL_PACKED(Z_ARRVAL_P(arg_array)) {
if (call->func->type == ZEND_USER_FUNCTION) {
}
} ZEND_HASH_FILL_END();
Z_ARRVAL_P(arg_array)->nNumOfElements = num_args;
+ } else {
+ ZVAL_EMPTY_ARRAY(arg_array);
}
}
/* }}} */
fci.params = params;
fci.param_count = 2;
ZVAL_STR(&fci.params[0], EX(func)->common.function_name);
- array_init(&fci.params[1]);
- zend_copy_parameters_array(ZEND_NUM_ARGS(), &fci.params[1]);
+ if (ZEND_NUM_ARGS()) {
+ array_init_size(&fci.params[1], ZEND_NUM_ARGS());
+ zend_copy_parameters_array(ZEND_NUM_ARGS(), &fci.params[1]);
+ } else {
+ ZVAL_EMPTY_ARRAY(&fci.params[1]);
+ }
fci.object = Z_OBJ(EX(This));
fcc.object = Z_OBJ(EX(This));
return 0;
}
+ if (!list->children) {
+ ZVAL_EMPTY_ARRAY(result);
+ return 1;
+ }
+
array_init_size(result, list->children);
for (i = 0; i < list->children; ++i) {
zend_ast *elem_ast = list->child[i];
static const uint32_t uninitialized_bucket[-HT_MIN_MASK] =
{HT_INVALID_IDX, HT_INVALID_IDX};
+ZEND_API const HashTable zend_empty_array = {
+ .gc.refcount = 2,
+ .gc.u.type_info = IS_ARRAY | (GC_IMMUTABLE << GC_FLAGS_SHIFT),
+ .u.flags = HASH_FLAG_STATIC_KEYS,
+ .nTableMask = HT_MIN_MASK,
+ .arData = (Bucket*)&uninitialized_bucket[2],
+ .nNumUsed = 0,
+ .nNumOfElements = 0,
+ .nTableSize = HT_MIN_SIZE,
+ .nInternalPointer = HT_INVALID_IDX,
+ .nNextFreeElement = 0,
+ .pDestructor = ZVAL_PTR_DTOR
+};
+
static zend_always_inline void _zend_hash_init_int(HashTable *ht, uint32_t nSize, dtor_func_t pDestructor, zend_bool persistent)
{
GC_REFCOUNT(ht) = 1;
# define HT_ALLOW_COW_VIOLATION(ht)
#endif
+extern ZEND_API const HashTable zend_empty_array;
+
+#define ZVAL_EMPTY_ARRAY(z) do { \
+ zval *__z = (z); \
+ Z_ARR_P(__z) = (zend_array*)&zend_empty_array; \
+ Z_TYPE_INFO_P(__z) = IS_ARRAY | (IS_TYPE_COPYABLE << Z_TYPE_FLAGS_SHIFT); \
+ } while (0)
+
+
typedef struct _zend_hash_key {
zend_ulong h;
zend_string *key;
}
zval_dtor(op);
+ /*ZVAL_EMPTY_ARRAY(op);*/
array_init(op);
}
break;
case IS_NULL:
+ /*ZVAL_EMPTY_ARRAY(op);*/
array_init(op);
break;
case IS_REFERENCE:
}
} ZEND_HASH_FILL_END();
} else {
- array_init(params);
+ ZVAL_EMPTY_ARRAY(params);
}
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
array = EX_VAR(opline->result.var);
if (OP1_TYPE != IS_UNUSED) {
size = opline->extended_value >> ZEND_ARRAY_SIZE_SHIFT;
- } else {
- size = 0;
- }
- ZVAL_ARR(array, zend_new_array(size));
-
- if (OP1_TYPE != IS_UNUSED) {
+ ZVAL_ARR(array, zend_new_array(size));
/* Explicitly initialize array as not-packed if flag is set */
if (opline->extended_value & ZEND_ARRAY_NOT_PACKED) {
zend_hash_real_init(Z_ARRVAL_P(array), 0);
}
+ ZEND_VM_DISPATCH_TO_HANDLER(ZEND_ADD_ARRAY_ELEMENT);
+ } else {
+ ZVAL_EMPTY_ARRAY(array);
+ ZEND_VM_NEXT_OPCODE();
}
-
- ZEND_VM_DISPATCH_TO_HANDLER(ZEND_ADD_ARRAY_ELEMENT);
}
ZEND_VM_HANDLER(21, ZEND_CAST, CONST|TMP|VAR|CV, ANY, TYPE)
if (opline->extended_value == IS_ARRAY) {
if (Z_TYPE_P(expr) != IS_OBJECT) {
- ZVAL_ARR(result, zend_new_array(8));
if (Z_TYPE_P(expr) != IS_NULL) {
+ ZVAL_ARR(result, zend_new_array(8));
expr = zend_hash_index_add_new(Z_ARRVAL_P(result), 0, expr);
if (OP1_TYPE == IS_CONST) {
if (UNEXPECTED(Z_OPT_REFCOUNTED_P(expr))) Z_ADDREF_P(expr);
} else {
if (Z_OPT_REFCOUNTED_P(expr)) Z_ADDREF_P(expr);
}
+ } else {
+ ZVAL_EMPTY_ARRAY(result);
}
} else {
ZVAL_COPY_VALUE(result, expr);
SAVE_OPLINE();
- args = zend_new_array(num_args);
if (num_args) {
zval *p = ZEND_CALL_ARG(execute_data, 1);
zval *end = p + num_args;
+ args = zend_new_array(num_args);
zend_hash_real_init(args, 1);
ZEND_HASH_FILL_PACKED(args) {
do {
ZEND_CALL_NUM_ARGS(call) = 2;
ZVAL_STR(ZEND_CALL_ARG(call, 1), fbc->common.function_name);
- ZVAL_ARR(ZEND_CALL_ARG(call, 2), args);
+ if (num_args) {
+ ZVAL_ARR(ZEND_CALL_ARG(call, 2), args);
+ } else {
+ ZVAL_EMPTY_ARRAY(ZEND_CALL_ARG(call, 2));
+ }
zend_free_trampoline(fbc);
fbc = call->func;
result_size = arg_count;
}
- ht = zend_new_array(result_size);
- ZVAL_ARR(EX_VAR(opline->result.var), ht);
-
if (result_size) {
uint32_t first_extra_arg = EX(func)->op_array.num_args;
+
+ ht = zend_new_array(result_size);
+ ZVAL_ARR(EX_VAR(opline->result.var), ht);
zend_hash_real_init(ht, 1);
ZEND_HASH_FILL_PACKED(ht) {
zval *p, *q;
}
} ZEND_HASH_FILL_END();
ht->nNumOfElements = result_size;
+ } else {
+ ZVAL_EMPTY_ARRAY(EX_VAR(opline->result.var));
}
ZEND_VM_NEXT_OPCODE();
}
}
} ZEND_HASH_FILL_END();
} else {
- array_init(params);
+ ZVAL_EMPTY_ARRAY(params);
}
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
SAVE_OPLINE();
- args = zend_new_array(num_args);
if (num_args) {
zval *p = ZEND_CALL_ARG(execute_data, 1);
zval *end = p + num_args;
+ args = zend_new_array(num_args);
zend_hash_real_init(args, 1);
ZEND_HASH_FILL_PACKED(args) {
do {
ZEND_CALL_NUM_ARGS(call) = 2;
ZVAL_STR(ZEND_CALL_ARG(call, 1), fbc->common.function_name);
- ZVAL_ARR(ZEND_CALL_ARG(call, 2), args);
+ if (num_args) {
+ ZVAL_ARR(ZEND_CALL_ARG(call, 2), args);
+ } else {
+ ZVAL_EMPTY_ARRAY(ZEND_CALL_ARG(call, 2));
+ }
zend_free_trampoline(fbc);
fbc = call->func;
if (opline->extended_value == IS_ARRAY) {
if (Z_TYPE_P(expr) != IS_OBJECT) {
- ZVAL_ARR(result, zend_new_array(8));
if (Z_TYPE_P(expr) != IS_NULL) {
+ ZVAL_ARR(result, zend_new_array(8));
expr = zend_hash_index_add_new(Z_ARRVAL_P(result), 0, expr);
if (IS_CONST == IS_CONST) {
if (UNEXPECTED(Z_OPT_REFCOUNTED_P(expr))) Z_ADDREF_P(expr);
} else {
if (Z_OPT_REFCOUNTED_P(expr)) Z_ADDREF_P(expr);
}
+ } else {
+ ZVAL_EMPTY_ARRAY(result);
}
} else {
ZVAL_COPY_VALUE(result, expr);
array = EX_VAR(opline->result.var);
if (IS_CONST != IS_UNUSED) {
size = opline->extended_value >> ZEND_ARRAY_SIZE_SHIFT;
- } else {
- size = 0;
- }
- ZVAL_ARR(array, zend_new_array(size));
-
- if (IS_CONST != IS_UNUSED) {
+ ZVAL_ARR(array, zend_new_array(size));
/* Explicitly initialize array as not-packed if flag is set */
if (opline->extended_value & ZEND_ARRAY_NOT_PACKED) {
zend_hash_real_init(Z_ARRVAL_P(array), 0);
}
+ ZEND_VM_TAIL_CALL(ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
+ } else {
+ ZVAL_EMPTY_ARRAY(array);
+ ZEND_VM_NEXT_OPCODE();
}
-
- ZEND_VM_TAIL_CALL(ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
}
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_UNSET_STATIC_PROP_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
array = EX_VAR(opline->result.var);
if (IS_CONST != IS_UNUSED) {
size = opline->extended_value >> ZEND_ARRAY_SIZE_SHIFT;
- } else {
- size = 0;
- }
- ZVAL_ARR(array, zend_new_array(size));
-
- if (IS_CONST != IS_UNUSED) {
+ ZVAL_ARR(array, zend_new_array(size));
/* Explicitly initialize array as not-packed if flag is set */
if (opline->extended_value & ZEND_ARRAY_NOT_PACKED) {
zend_hash_real_init(Z_ARRVAL_P(array), 0);
}
+ ZEND_VM_TAIL_CALL(ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
+ } else {
+ ZVAL_EMPTY_ARRAY(array);
+ ZEND_VM_NEXT_OPCODE();
}
-
- ZEND_VM_TAIL_CALL(ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
}
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_UNSET_VAR_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
result_size = arg_count;
}
- ht = zend_new_array(result_size);
- ZVAL_ARR(EX_VAR(opline->result.var), ht);
-
if (result_size) {
uint32_t first_extra_arg = EX(func)->op_array.num_args;
+
+ ht = zend_new_array(result_size);
+ ZVAL_ARR(EX_VAR(opline->result.var), ht);
zend_hash_real_init(ht, 1);
ZEND_HASH_FILL_PACKED(ht) {
zval *p, *q;
}
} ZEND_HASH_FILL_END();
ht->nNumOfElements = result_size;
+ } else {
+ ZVAL_EMPTY_ARRAY(EX_VAR(opline->result.var));
}
ZEND_VM_NEXT_OPCODE();
}
array = EX_VAR(opline->result.var);
if (IS_CONST != IS_UNUSED) {
size = opline->extended_value >> ZEND_ARRAY_SIZE_SHIFT;
- } else {
- size = 0;
- }
- ZVAL_ARR(array, zend_new_array(size));
-
- if (IS_CONST != IS_UNUSED) {
+ ZVAL_ARR(array, zend_new_array(size));
/* Explicitly initialize array as not-packed if flag is set */
if (opline->extended_value & ZEND_ARRAY_NOT_PACKED) {
zend_hash_real_init(Z_ARRVAL_P(array), 0);
}
+ ZEND_VM_TAIL_CALL(ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
+ } else {
+ ZVAL_EMPTY_ARRAY(array);
+ ZEND_VM_NEXT_OPCODE();
}
-
- ZEND_VM_TAIL_CALL(ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
}
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
array = EX_VAR(opline->result.var);
if (IS_CONST != IS_UNUSED) {
size = opline->extended_value >> ZEND_ARRAY_SIZE_SHIFT;
- } else {
- size = 0;
- }
- ZVAL_ARR(array, zend_new_array(size));
-
- if (IS_CONST != IS_UNUSED) {
+ ZVAL_ARR(array, zend_new_array(size));
/* Explicitly initialize array as not-packed if flag is set */
if (opline->extended_value & ZEND_ARRAY_NOT_PACKED) {
zend_hash_real_init(Z_ARRVAL_P(array), 0);
}
+ ZEND_VM_TAIL_CALL(ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
+ } else {
+ ZVAL_EMPTY_ARRAY(array);
+ ZEND_VM_NEXT_OPCODE();
}
-
- ZEND_VM_TAIL_CALL(ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
}
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
if (opline->extended_value == IS_ARRAY) {
if (Z_TYPE_P(expr) != IS_OBJECT) {
- ZVAL_ARR(result, zend_new_array(8));
if (Z_TYPE_P(expr) != IS_NULL) {
+ ZVAL_ARR(result, zend_new_array(8));
expr = zend_hash_index_add_new(Z_ARRVAL_P(result), 0, expr);
if (IS_TMP_VAR == IS_CONST) {
if (UNEXPECTED(Z_OPT_REFCOUNTED_P(expr))) Z_ADDREF_P(expr);
} else {
if (Z_OPT_REFCOUNTED_P(expr)) Z_ADDREF_P(expr);
}
+ } else {
+ ZVAL_EMPTY_ARRAY(result);
}
} else {
ZVAL_COPY_VALUE(result, expr);
array = EX_VAR(opline->result.var);
if (IS_TMP_VAR != IS_UNUSED) {
size = opline->extended_value >> ZEND_ARRAY_SIZE_SHIFT;
- } else {
- size = 0;
- }
- ZVAL_ARR(array, zend_new_array(size));
-
- if (IS_TMP_VAR != IS_UNUSED) {
+ ZVAL_ARR(array, zend_new_array(size));
/* Explicitly initialize array as not-packed if flag is set */
if (opline->extended_value & ZEND_ARRAY_NOT_PACKED) {
zend_hash_real_init(Z_ARRVAL_P(array), 0);
}
+ ZEND_VM_TAIL_CALL(ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
+ } else {
+ ZVAL_EMPTY_ARRAY(array);
+ ZEND_VM_NEXT_OPCODE();
}
-
- ZEND_VM_TAIL_CALL(ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
}
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_YIELD_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
array = EX_VAR(opline->result.var);
if (IS_TMP_VAR != IS_UNUSED) {
size = opline->extended_value >> ZEND_ARRAY_SIZE_SHIFT;
- } else {
- size = 0;
- }
- ZVAL_ARR(array, zend_new_array(size));
-
- if (IS_TMP_VAR != IS_UNUSED) {
+ ZVAL_ARR(array, zend_new_array(size));
/* Explicitly initialize array as not-packed if flag is set */
if (opline->extended_value & ZEND_ARRAY_NOT_PACKED) {
zend_hash_real_init(Z_ARRVAL_P(array), 0);
}
+ ZEND_VM_TAIL_CALL(ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
+ } else {
+ ZVAL_EMPTY_ARRAY(array);
+ ZEND_VM_NEXT_OPCODE();
}
-
- ZEND_VM_TAIL_CALL(ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
}
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_YIELD_SPEC_TMP_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
array = EX_VAR(opline->result.var);
if (IS_TMP_VAR != IS_UNUSED) {
size = opline->extended_value >> ZEND_ARRAY_SIZE_SHIFT;
- } else {
- size = 0;
- }
- ZVAL_ARR(array, zend_new_array(size));
-
- if (IS_TMP_VAR != IS_UNUSED) {
+ ZVAL_ARR(array, zend_new_array(size));
/* Explicitly initialize array as not-packed if flag is set */
if (opline->extended_value & ZEND_ARRAY_NOT_PACKED) {
zend_hash_real_init(Z_ARRVAL_P(array), 0);
}
+ ZEND_VM_TAIL_CALL(ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
+ } else {
+ ZVAL_EMPTY_ARRAY(array);
+ ZEND_VM_NEXT_OPCODE();
}
-
- ZEND_VM_TAIL_CALL(ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
}
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_YIELD_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
array = EX_VAR(opline->result.var);
if (IS_TMP_VAR != IS_UNUSED) {
size = opline->extended_value >> ZEND_ARRAY_SIZE_SHIFT;
- } else {
- size = 0;
- }
- ZVAL_ARR(array, zend_new_array(size));
-
- if (IS_TMP_VAR != IS_UNUSED) {
+ ZVAL_ARR(array, zend_new_array(size));
/* Explicitly initialize array as not-packed if flag is set */
if (opline->extended_value & ZEND_ARRAY_NOT_PACKED) {
zend_hash_real_init(Z_ARRVAL_P(array), 0);
}
+ ZEND_VM_TAIL_CALL(ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
+ } else {
+ ZVAL_EMPTY_ARRAY(array);
+ ZEND_VM_NEXT_OPCODE();
}
-
- ZEND_VM_TAIL_CALL(ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
}
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_INC_SPEC_VAR_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
if (opline->extended_value == IS_ARRAY) {
if (Z_TYPE_P(expr) != IS_OBJECT) {
- ZVAL_ARR(result, zend_new_array(8));
if (Z_TYPE_P(expr) != IS_NULL) {
+ ZVAL_ARR(result, zend_new_array(8));
expr = zend_hash_index_add_new(Z_ARRVAL_P(result), 0, expr);
if (IS_VAR == IS_CONST) {
if (UNEXPECTED(Z_OPT_REFCOUNTED_P(expr))) Z_ADDREF_P(expr);
} else {
if (Z_OPT_REFCOUNTED_P(expr)) Z_ADDREF_P(expr);
}
+ } else {
+ ZVAL_EMPTY_ARRAY(result);
}
} else {
ZVAL_COPY_VALUE(result, expr);
array = EX_VAR(opline->result.var);
if (IS_VAR != IS_UNUSED) {
size = opline->extended_value >> ZEND_ARRAY_SIZE_SHIFT;
- } else {
- size = 0;
- }
- ZVAL_ARR(array, zend_new_array(size));
-
- if (IS_VAR != IS_UNUSED) {
+ ZVAL_ARR(array, zend_new_array(size));
/* Explicitly initialize array as not-packed if flag is set */
if (opline->extended_value & ZEND_ARRAY_NOT_PACKED) {
zend_hash_real_init(Z_ARRVAL_P(array), 0);
}
+ ZEND_VM_TAIL_CALL(ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
+ } else {
+ ZVAL_EMPTY_ARRAY(array);
+ ZEND_VM_NEXT_OPCODE();
}
-
- ZEND_VM_TAIL_CALL(ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
}
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_UNSET_DIM_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
array = EX_VAR(opline->result.var);
if (IS_VAR != IS_UNUSED) {
size = opline->extended_value >> ZEND_ARRAY_SIZE_SHIFT;
- } else {
- size = 0;
- }
- ZVAL_ARR(array, zend_new_array(size));
-
- if (IS_VAR != IS_UNUSED) {
+ ZVAL_ARR(array, zend_new_array(size));
/* Explicitly initialize array as not-packed if flag is set */
if (opline->extended_value & ZEND_ARRAY_NOT_PACKED) {
zend_hash_real_init(Z_ARRVAL_P(array), 0);
}
+ ZEND_VM_TAIL_CALL(ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
+ } else {
+ ZVAL_EMPTY_ARRAY(array);
+ ZEND_VM_NEXT_OPCODE();
}
-
- ZEND_VM_TAIL_CALL(ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
}
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SEPARATE_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
array = EX_VAR(opline->result.var);
if (IS_VAR != IS_UNUSED) {
size = opline->extended_value >> ZEND_ARRAY_SIZE_SHIFT;
- } else {
- size = 0;
- }
- ZVAL_ARR(array, zend_new_array(size));
-
- if (IS_VAR != IS_UNUSED) {
+ ZVAL_ARR(array, zend_new_array(size));
/* Explicitly initialize array as not-packed if flag is set */
if (opline->extended_value & ZEND_ARRAY_NOT_PACKED) {
zend_hash_real_init(Z_ARRVAL_P(array), 0);
}
+ ZEND_VM_TAIL_CALL(ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
+ } else {
+ ZVAL_EMPTY_ARRAY(array);
+ ZEND_VM_NEXT_OPCODE();
}
-
- ZEND_VM_TAIL_CALL(ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
}
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_UNSET_DIM_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
array = EX_VAR(opline->result.var);
if (IS_VAR != IS_UNUSED) {
size = opline->extended_value >> ZEND_ARRAY_SIZE_SHIFT;
- } else {
- size = 0;
- }
- ZVAL_ARR(array, zend_new_array(size));
-
- if (IS_VAR != IS_UNUSED) {
+ ZVAL_ARR(array, zend_new_array(size));
/* Explicitly initialize array as not-packed if flag is set */
if (opline->extended_value & ZEND_ARRAY_NOT_PACKED) {
zend_hash_real_init(Z_ARRVAL_P(array), 0);
}
+ ZEND_VM_TAIL_CALL(ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
+ } else {
+ ZVAL_EMPTY_ARRAY(array);
+ ZEND_VM_NEXT_OPCODE();
}
-
- ZEND_VM_TAIL_CALL(ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
}
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_UNSET_DIM_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
result_size = arg_count;
}
- ht = zend_new_array(result_size);
- ZVAL_ARR(EX_VAR(opline->result.var), ht);
-
if (result_size) {
uint32_t first_extra_arg = EX(func)->op_array.num_args;
+
+ ht = zend_new_array(result_size);
+ ZVAL_ARR(EX_VAR(opline->result.var), ht);
zend_hash_real_init(ht, 1);
ZEND_HASH_FILL_PACKED(ht) {
zval *p, *q;
}
} ZEND_HASH_FILL_END();
ht->nNumOfElements = result_size;
+ } else {
+ ZVAL_EMPTY_ARRAY(EX_VAR(opline->result.var));
}
ZEND_VM_NEXT_OPCODE();
}
if (opline->extended_value == IS_ARRAY) {
if (Z_TYPE_P(expr) != IS_OBJECT) {
- ZVAL_ARR(result, zend_new_array(8));
if (Z_TYPE_P(expr) != IS_NULL) {
+ ZVAL_ARR(result, zend_new_array(8));
expr = zend_hash_index_add_new(Z_ARRVAL_P(result), 0, expr);
if (IS_CV == IS_CONST) {
if (UNEXPECTED(Z_OPT_REFCOUNTED_P(expr))) Z_ADDREF_P(expr);
} else {
if (Z_OPT_REFCOUNTED_P(expr)) Z_ADDREF_P(expr);
}
+ } else {
+ ZVAL_EMPTY_ARRAY(result);
}
} else {
ZVAL_COPY_VALUE(result, expr);
array = EX_VAR(opline->result.var);
if (IS_CV != IS_UNUSED) {
size = opline->extended_value >> ZEND_ARRAY_SIZE_SHIFT;
- } else {
- size = 0;
- }
- ZVAL_ARR(array, zend_new_array(size));
-
- if (IS_CV != IS_UNUSED) {
+ ZVAL_ARR(array, zend_new_array(size));
/* Explicitly initialize array as not-packed if flag is set */
if (opline->extended_value & ZEND_ARRAY_NOT_PACKED) {
zend_hash_real_init(Z_ARRVAL_P(array), 0);
}
+ ZEND_VM_TAIL_CALL(ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
+ } else {
+ ZVAL_EMPTY_ARRAY(array);
+ ZEND_VM_NEXT_OPCODE();
}
-
- ZEND_VM_TAIL_CALL(ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
}
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_UNSET_STATIC_PROP_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
array = EX_VAR(opline->result.var);
if (IS_CV != IS_UNUSED) {
size = opline->extended_value >> ZEND_ARRAY_SIZE_SHIFT;
- } else {
- size = 0;
- }
- ZVAL_ARR(array, zend_new_array(size));
-
- if (IS_CV != IS_UNUSED) {
+ ZVAL_ARR(array, zend_new_array(size));
/* Explicitly initialize array as not-packed if flag is set */
if (opline->extended_value & ZEND_ARRAY_NOT_PACKED) {
zend_hash_real_init(Z_ARRVAL_P(array), 0);
}
+ ZEND_VM_TAIL_CALL(ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
+ } else {
+ ZVAL_EMPTY_ARRAY(array);
+ ZEND_VM_NEXT_OPCODE();
}
-
- ZEND_VM_TAIL_CALL(ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
}
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_UNSET_CV_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
array = EX_VAR(opline->result.var);
if (IS_CV != IS_UNUSED) {
size = opline->extended_value >> ZEND_ARRAY_SIZE_SHIFT;
- } else {
- size = 0;
- }
- ZVAL_ARR(array, zend_new_array(size));
-
- if (IS_CV != IS_UNUSED) {
+ ZVAL_ARR(array, zend_new_array(size));
/* Explicitly initialize array as not-packed if flag is set */
if (opline->extended_value & ZEND_ARRAY_NOT_PACKED) {
zend_hash_real_init(Z_ARRVAL_P(array), 0);
}
+ ZEND_VM_TAIL_CALL(ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
+ } else {
+ ZVAL_EMPTY_ARRAY(array);
+ ZEND_VM_NEXT_OPCODE();
}
-
- ZEND_VM_TAIL_CALL(ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
}
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_UNSET_DIM_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
array = EX_VAR(opline->result.var);
if (IS_CV != IS_UNUSED) {
size = opline->extended_value >> ZEND_ARRAY_SIZE_SHIFT;
- } else {
- size = 0;
- }
- ZVAL_ARR(array, zend_new_array(size));
-
- if (IS_CV != IS_UNUSED) {
+ ZVAL_ARR(array, zend_new_array(size));
/* Explicitly initialize array as not-packed if flag is set */
if (opline->extended_value & ZEND_ARRAY_NOT_PACKED) {
zend_hash_real_init(Z_ARRVAL_P(array), 0);
}
+ ZEND_VM_TAIL_CALL(ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
+ } else {
+ ZVAL_EMPTY_ARRAY(array);
+ ZEND_VM_NEXT_OPCODE();
}
-
- ZEND_VM_TAIL_CALL(ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
}
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_UNSET_DIM_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
xmlFree(str);
} else if (type == 2) {
int j;
- array_init(&fci.params[i]);
if (obj->nodesetval && obj->nodesetval->nodeNr > 0) {
+ array_init(&fci.params[i]);
for (j = 0; j < obj->nodesetval->nodeNr; j++) {
xmlNodePtr node = obj->nodesetval->nodeTab[j];
zval child;
php_dom_create_object(node, &child, &intern->dom);
add_next_index_zval(&fci.params[i], &child);
}
+ } else {
+ ZVAL_EMPTY_ARRAY(&fci.params[i]);
}
}
break;
int i;
xmlNodeSetPtr nodesetp;
- array_init(&retval);
-
- if (xpathobjp->type == XPATH_NODESET && NULL != (nodesetp = xpathobjp->nodesetval)) {
+ if (xpathobjp->type == XPATH_NODESET && NULL != (nodesetp = xpathobjp->nodesetval) && nodesetp->nodeNr) {
+ array_init(&retval);
for (i = 0; i < nodesetp->nodeNr; i++) {
xmlNodePtr node = nodesetp->nodeTab[i];
zval child;
php_dom_create_object(node, &child, &intern->dom);
add_next_index_zval(&retval, &child);
}
+ } else {
+ ZVAL_EMPTY_ARRAY(&retval);
}
php_dom_create_interator(return_value, DOM_NODELIST);
nodeobj = Z_DOMOBJ_P(return_value);
xmlErrorPtr error;
- array_init(return_value);
-
if (LIBXML(error_list)) {
+ array_init(return_value);
error = zend_llist_get_first(LIBXML(error_list));
while (error != NULL) {
error = zend_llist_get_next(LIBXML(error_list));
}
+ } else {
+ ZVAL_EMPTY_ARRAY(return_value);
}
}
/* }}} */
break;
case IS_ARRAY:
chash = php_mb_convert_encoding_recursive(HASH_OF(entry), _to_encoding, _from_encodings);
- if (!chash) {
- chash = zend_new_array(0);
+ if (chash) {
+ ZVAL_ARR(&entry_tmp, chash);
+ } else {
+ ZVAL_EMPTY_ARRAY(&entry_tmp);
}
- ZVAL_ARR(&entry_tmp, chash);
break;
case IS_OBJECT:
default:
return;
}
MYSQLI_FETCH_RESOURCE_CONN(mysql, mysql_link, MYSQLI_STATUS_VALID);
- array_init(return_value);
#if defined(MYSQLI_USE_MYSQLND)
if (mysql->mysql->data->error_info->error_list) {
MYSQLND_ERROR_LIST_ELEMENT * message;
zend_llist_position pos;
+ array_init(return_value);
for (message = (MYSQLND_ERROR_LIST_ELEMENT *) zend_llist_get_first_ex(mysql->mysql->data->error_info->error_list, &pos);
message;
message = (MYSQLND_ERROR_LIST_ELEMENT *) zend_llist_get_next_ex(mysql->mysql->data->error_info->error_list, &pos))
add_assoc_string_ex(&single_error, "error", sizeof("error") - 1, message->error);
add_next_index_zval(return_value, &single_error);
}
+ } else {
+ ZVAL_EMPTY_ARRAY(return_value);
}
#else
if (mysql_errno(mysql->mysql)) {
zval single_error;
+ array_init(return_value);
array_init(&single_error);
add_assoc_long_ex(&single_error, "errno", sizeof("errno") - 1, mysql_errno(mysql->mysql));
add_assoc_string_ex(&single_error, "sqlstate", sizeof("sqlstate") - 1, mysql_sqlstate(mysql->mysql));
add_assoc_string_ex(&single_error, "error", sizeof("error") - 1, mysql_error(mysql->mysql));
add_next_index_zval(return_value, &single_error);
+ } else {
+ ZVAL_EMPTY_ARRAY(return_value);
}
#endif
}
return;
}
MYSQLI_FETCH_RESOURCE_STMT(stmt, mysql_stmt, MYSQLI_STATUS_INITIALIZED);
- array_init(return_value);
#if defined(MYSQLI_USE_MYSQLND)
if (stmt->stmt && stmt->stmt->data && stmt->stmt->data->error_info->error_list) {
MYSQLND_ERROR_LIST_ELEMENT * message;
zend_llist_position pos;
+ array_init(return_value);
for (message = (MYSQLND_ERROR_LIST_ELEMENT *) zend_llist_get_first_ex(stmt->stmt->data->error_info->error_list, &pos);
message;
message = (MYSQLND_ERROR_LIST_ELEMENT *) zend_llist_get_next_ex(stmt->stmt->data->error_info->error_list, &pos))
add_assoc_string_ex(&single_error, "error", sizeof("error") - 1, message->error);
add_next_index_zval(return_value, &single_error);
}
+ } else {
+ ZVAL_EMPTY_ARRAY(return_value);
}
#else
if (mysql_stmt_errno(stmt->stmt)) {
zval single_error;
+ array_init(return_value);
array_init(&single_error);
add_assoc_long_ex(&single_error, "errno", sizeof("errno") - 1, mysql_stmt_errno(stmt->stmt));
add_assoc_string_ex(&single_error, "sqlstate", sizeof("sqlstate") - 1, mysql_stmt_sqlstate(stmt->stmt));
add_assoc_string_ex(&single_error, "error", sizeof("error") - 1, mysql_stmt_error(stmt->stmt));
add_next_index_zval(return_value, &single_error);
+ } else {
+ ZVAL_EMPTY_ARRAY(return_value);
}
#endif
}
mysql = (MY_MYSQL *)((MYSQLI_RESOURCE *)(obj->ptr))->ptr;
- array_init(retval);
if (mysql) {
+ array_init(retval);
#if defined(MYSQLI_USE_MYSQLND)
if (mysql->mysql->data->error_info->error_list) {
MYSQLND_ERROR_LIST_ELEMENT * message;
add_next_index_zval(retval, &single_error);
}
#endif
+ } else {
+ ZVAL_EMPTY_ARRAY(retval);
}
return retval;
CHECK_STATUS(MYSQLI_STATUS_INITIALIZED);
stmt = (MY_STMT *)((MYSQLI_RESOURCE *)(obj->ptr))->ptr;
- array_init(retval);
if (stmt && stmt->stmt) {
+ array_init(retval);
#if defined(MYSQLI_USE_MYSQLND)
if (stmt->stmt->data && stmt->stmt->data->error_info->error_list) {
MYSQLND_ERROR_LIST_ELEMENT * message;
add_next_index_zval(retval, &single_error);
}
#endif
+ } else {
+ ZVAL_EMPTY_ARRAY(retval);
}
return retval;
}
GET_REFLECTION_OBJECT_PTR(fptr);
/* Return an empty array in case no static variables exist */
- array_init(return_value);
if (fptr->type == ZEND_USER_FUNCTION && fptr->op_array.static_variables != NULL) {
+ array_init(return_value);
if (GC_REFCOUNT(fptr->op_array.static_variables) > 1) {
if (!(GC_FLAGS(fptr->op_array.static_variables) & IS_ARRAY_IMMUTABLE)) {
GC_REFCOUNT(fptr->op_array.static_variables)--;
}
} ZEND_HASH_FOREACH_END();
zend_hash_copy(Z_ARRVAL_P(return_value), fptr->op_array.static_variables, zval_add_ref);
+ } else {
+ ZVAL_EMPTY_ARRAY(return_value);
}
}
/* }}} */
num_args++;
}
+ if (!num_args) {
+ ZVAL_EMPTY_ARRAY(return_value);
+ return;
+ }
+
array_init(return_value);
for (i = 0; i < num_args; i++) {
zval parameter;
}
GET_REFLECTION_OBJECT_PTR(ce);
- /* Return an empty array if this class implements no interfaces */
- array_init(return_value);
-
if (ce->num_interfaces) {
uint32_t i;
+ array_init(return_value);
for (i=0; i < ce->num_interfaces; i++) {
zval interface;
zend_reflection_class_factory(ce->interfaces[i], &interface);
zend_hash_update(Z_ARRVAL_P(return_value), ce->interfaces[i]->name, &interface);
}
+ } else {
+ ZVAL_EMPTY_ARRAY(return_value);
}
}
/* }}} */
}
GET_REFLECTION_OBJECT_PTR(ce);
- /* Return an empty array if this class implements no interfaces */
+ if (!ce->num_interfaces) {
+ /* Return an empty array if this class implements no interfaces */
+ ZVAL_EMPTY_ARRAY(return_value);
+ return;
+ }
+
array_init(return_value);
for (i=0; i < ce->num_interfaces; i++) {
}
GET_REFLECTION_OBJECT_PTR(ce);
+ if (!ce->num_traits) {
+ ZVAL_EMPTY_ARRAY(return_value);
+ return;
+ }
+
array_init(return_value);
for (i=0; i < ce->num_traits; i++) {
}
GET_REFLECTION_OBJECT_PTR(ce);
+ if (!ce->num_traits) {
+ ZVAL_EMPTY_ARRAY(return_value);
+ return;
+ }
+
array_init(return_value);
for (i=0; i < ce->num_traits; i++) {
}
GET_REFLECTION_OBJECT_PTR(ce);
- array_init(return_value);
if (ce->trait_aliases) {
uint32_t i = 0;
+
+ array_init(return_value);
while (ce->trait_aliases[i]) {
zend_string *mname;
zend_trait_method_reference *cur_ref = ce->trait_aliases[i]->trait_method;
}
i++;
}
+ } else {
+ ZVAL_EMPTY_ARRAY(return_value);
}
}
/* }}} */
}
GET_REFLECTION_OBJECT_PTR(module);
- array_init(return_value);
-
dep = module->deps;
if (!dep)
{
+ ZVAL_EMPTY_ARRAY(return_value);
return;
}
+ array_init(return_value);
while(dep->name) {
zend_string *relation;
char *rel_type;
result = retval->nodesetval;
- array_init(return_value);
-
if (result != NULL) {
+ array_init(return_value);
+
for (i = 0; i < result->nodeNr; ++i) {
nodeptr = result->nodeTab[i];
if (nodeptr->type == XML_TEXT_NODE || nodeptr->type == XML_ELEMENT_NODE || nodeptr->type == XML_ATTRIBUTE_NODE) {
add_next_index_zval(return_value, &value);
}
}
+ } else {
+ ZVAL_EMPTY_ARRAY(return_value);
}
xmlXPathFreeObject(retval);
intern = Z_SPLFIXEDARRAY_P(getThis());
- array_init(return_value);
if (intern->array.size > 0) {
int i = 0;
+
+ array_init(return_value);
for (; i < intern->array.size; i++) {
if (!Z_ISUNDEF(intern->array.elements[i])) {
zend_hash_index_update(Z_ARRVAL_P(return_value), i, &intern->array.elements[i]);
zend_hash_index_update(Z_ARRVAL_P(return_value), i, &EG(uninitialized_zval));
}
}
+ } else {
+ ZVAL_EMPTY_ARRAY(return_value);
}
}
/* }}} */
if (!entire_row) {
RETVAL_NULL();
} else {
- array_init(return_value);
+ ZVAL_EMPTY_ARRAY(return_value);
}
break;
}
}
}
} else if (EXPECTED(num == 0)) {
- array_init(return_value);
+ ZVAL_EMPTY_ARRAY(return_value);
return;
} else {
php_error_docref(NULL, E_WARNING, "Number of elements can't be negative");
/* Clamp the offset.. */
if (offset > num_in) {
- array_init(return_value);
+ ZVAL_EMPTY_ARRAY(return_value);
return;
} else if (offset < 0 && (offset = (num_in + offset)) < 0) {
offset = 0;
}
if (length <= 0) {
- array_init(return_value);
+ ZVAL_EMPTY_ARRAY(return_value);
return;
}
RETURN_FALSE;
}
- array_init_size(return_value, num_keys);
-
if (!num_keys) {
+ ZVAL_EMPTY_ARRAY(return_value);
return;
}
+ array_init_size(return_value, num_keys);
ZEND_HASH_FOREACH_VAL(keys, entry_keys) {
while (1) {
if (pos_values >= values->nNumUsed) {
yych = *(YYMARKER = ++YYCURSOR);
if (yych == ':') goto yy88;
yy3:
-#line 1036 "ext/standard/var_unserializer.re"
+#line 1039 "ext/standard/var_unserializer.re"
{ return 0; }
#line 710 "ext/standard/var_unserializer.c"
yy4:
goto yy3;
yy14:
++YYCURSOR;
-#line 1030 "ext/standard/var_unserializer.re"
+#line 1033 "ext/standard/var_unserializer.re"
{
/* this is the case where we have less data than planned */
php_error_docref(NULL, E_NOTICE, "Unexpected end of serialized data");
yych = *++YYCURSOR;
if (yych != '"') goto yy18;
++YYCURSOR;
-#line 878 "ext/standard/var_unserializer.re"
+#line 881 "ext/standard/var_unserializer.re"
{
size_t len, len2, len3, maxlen;
zend_long elements;
yych = *++YYCURSOR;
if (yych != '"') goto yy18;
++YYCURSOR;
-#line 867 "ext/standard/var_unserializer.re"
+#line 870 "ext/standard/var_unserializer.re"
{
zend_long elements;
if (!var_hash) return 0;
return 0;
}
- array_init_size(rval, elements);
if (elements) {
+ array_init_size(rval, elements);
/* we can't convert from packed to hash during unserialization, because
reference to some zvals might be keept in var_hash (to support references) */
zend_hash_real_init(Z_ARRVAL_P(rval), 0);
+ } else {
+ ZVAL_EMPTY_ARRAY(rval);
+ return finish_nested_data(UNSERIALIZE_PASSTHRU);
}
/* The array may contain references to itself, in which case we'll be modifying an
return finish_nested_data(UNSERIALIZE_PASSTHRU);
}
-#line 1006 "ext/standard/var_unserializer.c"
+#line 1009 "ext/standard/var_unserializer.c"
yy36:
yych = *++YYCURSOR;
if (yych <= '/') goto yy18;
ZVAL_STR(rval, str);
return 1;
}
-#line 1055 "ext/standard/var_unserializer.c"
+#line 1058 "ext/standard/var_unserializer.c"
yy42:
yych = *++YYCURSOR;
if (yych <= '/') goto yy18;
}
return 1;
}
-#line 1108 "ext/standard/var_unserializer.c"
+#line 1111 "ext/standard/var_unserializer.c"
yy48:
yych = *++YYCURSOR;
if (yych <= '/') {
ZVAL_DOUBLE(rval, zend_strtod((const char *)start + 2, NULL));
return 1;
}
-#line 1205 "ext/standard/var_unserializer.c"
+#line 1208 "ext/standard/var_unserializer.c"
yy60:
yych = *++YYCURSOR;
if (yych <= ',') {
return 1;
}
-#line 1269 "ext/standard/var_unserializer.c"
+#line 1272 "ext/standard/var_unserializer.c"
yy70:
yych = *++YYCURSOR;
if (yych == 'N') goto yy67;
ZVAL_LONG(rval, parse_iv(start + 2));
return 1;
}
-#line 1322 "ext/standard/var_unserializer.c"
+#line 1325 "ext/standard/var_unserializer.c"
yy77:
yych = *++YYCURSOR;
if (yych <= '/') goto yy18;
ZVAL_BOOL(rval, parse_iv(start + 2));
return 1;
}
-#line 1336 "ext/standard/var_unserializer.c"
+#line 1339 "ext/standard/var_unserializer.c"
yy81:
++YYCURSOR;
#line 702 "ext/standard/var_unserializer.re"
ZVAL_NULL(rval);
return 1;
}
-#line 1345 "ext/standard/var_unserializer.c"
+#line 1348 "ext/standard/var_unserializer.c"
yy83:
yych = *++YYCURSOR;
if (yych <= '/') goto yy18;
return 1;
}
-#line 1383 "ext/standard/var_unserializer.c"
+#line 1386 "ext/standard/var_unserializer.c"
yy88:
yych = *++YYCURSOR;
if (yych <= '/') goto yy18;
return 1;
}
-#line 1421 "ext/standard/var_unserializer.c"
+#line 1424 "ext/standard/var_unserializer.c"
}
-#line 1038 "ext/standard/var_unserializer.re"
+#line 1041 "ext/standard/var_unserializer.re"
return 0;
return 0;
}
- array_init_size(rval, elements);
if (elements) {
+ array_init_size(rval, elements);
/* we can't convert from packed to hash during unserialization, because
reference to some zvals might be keept in var_hash (to support references) */
zend_hash_real_init(Z_ARRVAL_P(rval), 0);
+ } else {
+ ZVAL_EMPTY_ARRAY(rval);
+ return finish_nested_data(UNSERIALIZE_PASSTHRU);
}
/* The array may contain references to itself, in which case we'll be modifying an
} else if (type == 2) {
int j;
dom_object *domintern = (dom_object *)intern->doc;
- array_init(&args[i]);
if (obj->nodesetval && obj->nodesetval->nodeNr > 0) {
+ array_init(&args[i]);
for (j = 0; j < obj->nodesetval->nodeNr; j++) {
xmlNodePtr node = obj->nodesetval->nodeTab[j];
zval child;
php_dom_create_object(node, &child, domintern);
add_next_index_zval(&args[i], &child);
}
+ } else {
+ ZVAL_EMPTY_ARRAY(&args[i]);
}
}
break;