}
ZVAL_DUP(&tmp, array_ref);
array_ptr = array_ref = &tmp;
- } else if (OP1_TYPE == IS_CV) {
+ } else if (OP1_TYPE == IS_CV || OP1_TYPE == IS_VAR) {
if (Z_ISREF_P(array_ref) && Z_REFCOUNT_P(array_ref) == 1) {
ZVAL_UNREF(array_ref);
array_ptr = array_ref;
}
zval_copy_ctor(array_ptr);
}
- Z_ADDREF_P(array_ref);
+ if (OP1_TYPE == IS_CV) {
+ Z_ADDREF_P(array_ref);
+ }
}
}
}
}
ZVAL_DUP(&tmp, array_ref);
array_ptr = array_ref = &tmp;
- } else if (IS_CONST == IS_CV) {
+ } else if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
if (Z_ISREF_P(array_ref) && Z_REFCOUNT_P(array_ref) == 1) {
ZVAL_UNREF(array_ref);
array_ptr = array_ref;
}
zval_copy_ctor(array_ptr);
}
- Z_ADDREF_P(array_ref);
+ if (IS_CONST == IS_CV) {
+ Z_ADDREF_P(array_ref);
+ }
}
}
}
}
ZVAL_DUP(&tmp, array_ref);
array_ptr = array_ref = &tmp;
- } else if (IS_TMP_VAR == IS_CV) {
+ } else if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
if (Z_ISREF_P(array_ref) && Z_REFCOUNT_P(array_ref) == 1) {
ZVAL_UNREF(array_ref);
array_ptr = array_ref;
}
zval_copy_ctor(array_ptr);
}
- Z_ADDREF_P(array_ref);
+ if (IS_TMP_VAR == IS_CV) {
+ Z_ADDREF_P(array_ref);
+ }
}
}
}
}
ZVAL_DUP(&tmp, array_ref);
array_ptr = array_ref = &tmp;
- } else if (IS_VAR == IS_CV) {
+ } else if (IS_VAR == IS_CV || IS_VAR == IS_VAR) {
if (Z_ISREF_P(array_ref) && Z_REFCOUNT_P(array_ref) == 1) {
ZVAL_UNREF(array_ref);
array_ptr = array_ref;
}
zval_copy_ctor(array_ptr);
}
- Z_ADDREF_P(array_ref);
+ if (IS_VAR == IS_CV) {
+ Z_ADDREF_P(array_ref);
+ }
}
}
}
}
ZVAL_DUP(&tmp, array_ref);
array_ptr = array_ref = &tmp;
- } else if (IS_CV == IS_CV) {
+ } else if (IS_CV == IS_CV || IS_CV == IS_VAR) {
if (Z_ISREF_P(array_ref) && Z_REFCOUNT_P(array_ref) == 1) {
ZVAL_UNREF(array_ref);
array_ptr = array_ref;
}
zval_copy_ctor(array_ptr);
}
- Z_ADDREF_P(array_ref);
+ if (IS_CV == IS_CV) {
+ Z_ADDREF_P(array_ref);
+ }
}
}
}