0
0
mirror of https://github.com/phpv8/v8js.git synced 2024-12-22 09:21:52 +00:00

fix exception back-propagation on PHP7

This commit is contained in:
Stefan Siegl 2015-10-11 14:59:25 +02:00
parent 5cba44ccd0
commit 296b9078ff
2 changed files with 5 additions and 5 deletions

View File

@ -34,7 +34,7 @@ catch(V8JsScriptException $e) {
--EXPECTF-- --EXPECTF--
after getException after getException
Got V8JsScriptException Got V8JsScriptException
string(%d) "php_exceptions_005:3: exception 'Exception' with message 'Test-Exception' in %s string(%d) "php_exceptions_005:3: Exception: Test-Exception in %s
Stack trace: Stack trace:
#0 [internal function]: Foo->getException() #0 [internal function]: Foo->getException()
#1 %s: V8Js->executeString('var ex = PHP.fo...', 'php_exceptions_...') #1 %s: V8Js->executeString('var ex = PHP.fo...', 'php_exceptions_...')

View File

@ -88,12 +88,12 @@ void v8js_create_script_exception(zval *return_value, v8::Isolate *isolate, v8::
if(!php_ref.IsEmpty()) { if(!php_ref.IsEmpty()) {
assert(php_ref->IsExternal()); assert(php_ref->IsExternal());
zval *php_exception = reinterpret_cast<zval *>(v8::External::Cast(*php_ref)->Value()); zend_object *php_exception = reinterpret_cast<zend_object *>(v8::External::Cast(*php_ref)->Value());
zend_class_entry *exception_ce = zend_exception_get_default(TSRMLS_C); zend_class_entry *exception_ce = zend_exception_get_default(TSRMLS_C);
if (Z_TYPE_P(php_exception) == IS_OBJECT && instanceof_function(Z_OBJCE_P(php_exception), exception_ce TSRMLS_CC)) { if (instanceof_function(php_exception->ce, exception_ce TSRMLS_CC)) {
Z_ADDREF_P(php_exception); ++GC_REFCOUNT(php_exception);
zend_exception_set_previous(Z_OBJ_P(return_value), Z_OBJ_P(php_exception)); zend_exception_set_previous(Z_OBJ_P(return_value), php_exception);
} }
} }
} }