(slot)[1] = (ptr); \
} while (0)
+#define SKIP_EXT_OPLINE(opline) do { \
+ while (UNEXPECTED((opline)->opcode <= ZEND_TICKS \
+ && (opline)->opcode >= ZEND_EXT_STMT)) { \
+ (opline)--; \
+ } \
+ } while (0)
+
END_EXTERN_C()
#endif /* ZEND_EXECUTE_H */
if (EG(assertions) <= 0) {
zend_op *target = OP_JMP_ADDR(opline, opline->op2);
-
- if (RETURN_VALUE_USED(target-1)) {
- ZVAL_TRUE(EX_VAR((target-1)->result.var));
+ zend_op *result = target - 1;
+ SKIP_EXT_OPLINE(result);
+ if (RETURN_VALUE_USED(result)) {
+ ZVAL_TRUE(EX_VAR(result->result.var));
}
ZEND_VM_JMP(target);
} else {
if (EG(assertions) <= 0) {
zend_op *target = OP_JMP_ADDR(opline, opline->op2);
-
- if (RETURN_VALUE_USED(target-1)) {
- ZVAL_TRUE(EX_VAR((target-1)->result.var));
+ zend_op *result = target - 1;
+ SKIP_EXT_OPLINE(result);
+ if (RETURN_VALUE_USED(result)) {
+ ZVAL_TRUE(EX_VAR(result->result.var));
}
ZEND_VM_JMP(target);
} else {