--- /dev/null
+--TEST--
+Memory leak when returning TMP/VAR with wrong return type
+--FILE--
+<?php
+
+function foo(): stdClass {
+ $a = new stdClass;
+ $b = [];
+ return [$a, $b];
+}
+
+try {
+ foo();
+} catch (BaseException $e) {
+ print $e->getMessage();
+}
+
+?>
+--EXPECTF--
+Return value of foo() must be an instance of stdClass, array returned in %s on line %d
}
}
zend_verify_return_type(EX(func), retval_ptr);
- if (EG(exception)) {
+
+ if (UNEXPECTED(EG(exception) != NULL)) {
}
#endif
}
}
zend_verify_return_type(EX(func), retval_ptr);
- if (EG(exception)) {
+
+ if (UNEXPECTED(EG(exception) != NULL)) {
zval_ptr_dtor_nogc(free_op1);
}
#endif
}
}
zend_verify_return_type(EX(func), retval_ptr);
- if (EG(exception)) {
+
+ if (UNEXPECTED(EG(exception) != NULL)) {
zval_ptr_dtor_nogc(free_op1);
}
#endif
}
}
zend_verify_return_type(EX(func), retval_ptr);
- if (EG(exception)) {
+
+ if (UNEXPECTED(EG(exception) != NULL)) {
}
#endif
}
}
zend_verify_return_type(EX(func), retval_ptr);
- if (EG(exception)) {
+
+ if (UNEXPECTED(EG(exception) != NULL)) {
}
#endif