@@ -50,6 +50,7 @@ v8::Local<v8::Value> v8js_propagate_exception(v8js_ctx *ctx) /* {{{ */
5050 }
5151
5252 zval tmp_zv;
53+ ZVAL_UNDEF (&tmp_zv);
5354
5455 if (Z_TYPE (ctx->exception_filter ) != IS_NULL) {
5556 zval params[1 ];
@@ -65,6 +66,7 @@ v8::Local<v8::Value> v8js_propagate_exception(v8js_ctx *ctx) /* {{{ */
6566 } else {
6667 return_value = ctx->isolate ->ThrowException (zval_to_v8js (&tmp_zv, ctx->isolate ));
6768 }
69+ zval_ptr_dtor (&tmp_zv);
6870 } else {
6971 ZVAL_OBJ (&tmp_zv, EG (exception));
7072 return_value = ctx->isolate ->ThrowException (zval_to_v8js (&tmp_zv, ctx->isolate ));
@@ -212,7 +214,7 @@ static void v8js_call_php_func(zend_object *object, zend_function *method_ptr, c
212214 return_value = v8js_propagate_exception (ctx);
213215 } else if (Z_TYPE (retval) == IS_OBJECT && Z_OBJ (retval) == object) {
214216 // special case: "return $this"
215- return_value = info.Holder ();
217+ return_value = info.This ();
216218 } else {
217219 return_value = zval_to_v8js (&retval, isolate);
218220 }
@@ -227,7 +229,7 @@ static void v8js_call_php_func(zend_object *object, zend_function *method_ptr, c
227229/* Callback for PHP methods and functions */
228230void v8js_php_callback (const v8::FunctionCallbackInfo<v8::Value>& info) /* {{{ */
229231{
230- v8::Local<v8::Object> self = info.Holder ();
232+ v8::Local<v8::Object> self = info.This ();
231233
232234 zend_object *object = reinterpret_cast <zend_object *>(self->GetAlignedPointerFromInternalField (1 ));
233235 zend_function *method_ptr;
@@ -364,7 +366,7 @@ static void v8js_named_property_enumerator(const v8::PropertyCallbackInfo<v8::Ar
364366 v8::Isolate *isolate = info.GetIsolate ();
365367 v8::Local<v8::Context> v8_context = isolate->GetEnteredOrMicrotaskContext ();
366368
367- v8::Local<v8::Object> self = info.Holder ();
369+ v8::Local<v8::Object> self = info.This ();
368370 v8::Local<v8::Array> result = v8::Array::New (isolate, 0 );
369371 uint32_t result_len = 0 ;
370372
@@ -466,7 +468,7 @@ static void v8js_invoke_callback(const v8::FunctionCallbackInfo<v8::Value>& info
466468 v8::Isolate *isolate = info.GetIsolate ();
467469 v8::Local<v8::Context> v8_context = isolate->GetEnteredOrMicrotaskContext ();
468470
469- v8::Local<v8::Object> self = info.Holder ();
471+ v8::Local<v8::Object> self = info.This ();
470472 v8::Local<v8::Function> cb = v8::Local<v8::Function>::Cast (info.Data ());
471473 int argc = info.Length (), i;
472474 v8::Local<v8::Value> *argv = static_cast <v8::Local<v8::Value> *>(alloca (sizeof (v8::Local<v8::Value>) * argc));
@@ -511,7 +513,7 @@ static void v8js_fake_call_impl(const v8::FunctionCallbackInfo<v8::Value>& info)
511513 v8::Isolate *isolate = info.GetIsolate ();
512514 v8::Local<v8::Context> v8_context = isolate->GetEnteredOrMicrotaskContext ();
513515
514- v8::Local<v8::Object> self = info.Holder ();
516+ v8::Local<v8::Object> self = info.This ();
515517 v8::Local<v8::Value> return_value = V8JS_NULL;
516518
517519 char *error;
@@ -859,7 +861,7 @@ v8::Local<v8::Value> v8js_named_property_callback(v8::Isolate *isolate, v8::Loca
859861
860862static V8JS_INTERCEPTED v8js_named_property_getter (v8::Local<v8::Name> property, const v8::PropertyCallbackInfo<v8::Value> &info) /* {{{ */
861863{
862- v8::Local<v8::Value> r = v8js_named_property_callback (info.GetIsolate (), info.Holder (), property, V8JS_PROP_GETTER);
864+ v8::Local<v8::Value> r = v8js_named_property_callback (info.GetIsolate (), info.This (), property, V8JS_PROP_GETTER);
863865
864866 if (r.IsEmpty ()) {
865867 return V8JS_INTERCEPTED_NO;
@@ -872,7 +874,7 @@ static V8JS_INTERCEPTED v8js_named_property_getter(v8::Local<v8::Name> property,
872874
873875static V8JS_INTERCEPTED v8js_named_property_setter (v8::Local<v8::Name> property, v8::Local<v8::Value> value, const V8JS_SETTER_PROPERTY_CALLBACK_INFO &info) /* {{{ */
874876{
875- v8::Local<v8::Value> r = v8js_named_property_callback (info.GetIsolate (), info.Holder (), property, V8JS_PROP_SETTER, value);
877+ v8::Local<v8::Value> r = v8js_named_property_callback (info.GetIsolate (), info.This (), property, V8JS_PROP_SETTER, value);
876878#if PHP_V8_HAS_INTERCEPTED
877879 return r.IsEmpty () ? v8::Intercepted::kNo : v8::Intercepted::kYes ;
878880#else
@@ -883,7 +885,7 @@ static V8JS_INTERCEPTED v8js_named_property_setter(v8::Local<v8::Name> property,
883885
884886static V8JS_INTERCEPTED v8js_named_property_query (v8::Local<v8::Name> property, const v8::PropertyCallbackInfo<v8::Integer> &info) /* {{{ */
885887{
886- v8::Local<v8::Value> r = v8js_named_property_callback (info.GetIsolate (), info.Holder (), property, V8JS_PROP_QUERY);
888+ v8::Local<v8::Value> r = v8js_named_property_callback (info.GetIsolate (), info.This (), property, V8JS_PROP_QUERY);
887889 if (r.IsEmpty ()) {
888890 return V8JS_INTERCEPTED_NO;
889891 }
@@ -901,7 +903,7 @@ static V8JS_INTERCEPTED v8js_named_property_query(v8::Local<v8::Name> property,
901903
902904static V8JS_INTERCEPTED v8js_named_property_deleter (v8::Local<v8::Name> property, const v8::PropertyCallbackInfo<v8::Boolean> &info) /* {{{ */
903905{
904- v8::Local<v8::Value> r = v8js_named_property_callback (info.GetIsolate (), info.Holder (), property, V8JS_PROP_DELETER);
906+ v8::Local<v8::Value> r = v8js_named_property_callback (info.GetIsolate (), info.This (), property, V8JS_PROP_DELETER);
905907 if (r.IsEmpty ()) {
906908 return V8JS_INTERCEPTED_NO;
907909 }
0 commit comments