Skip to content

Commit 3da3b77

Browse files
committed
fix: fix event.target still can be pointed by event after finalized by JavaScript GC. (#519)
<img width="901" alt="image" src="https://github.com/openwebf/webf/assets/4409743/aaf69f14-965e-4cb2-b8a1-1933e87ed8c5">
1 parent 3e57a7a commit 3da3b77

File tree

1 file changed

+6
-1
lines changed

1 file changed

+6
-1
lines changed

webf/lib/src/bridge/binding.dart

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,12 @@ void _dispatchEventToNative(Event event, bool isCapture) {
4949
Pointer<NativeBindingObject>? pointer = event.currentTarget?.pointer;
5050
int? contextId = event.target?.contextId;
5151
WebFController controller = WebFController.getControllerOfJSContextId(contextId)!;
52-
if (contextId != null && pointer != null && pointer.ref.invokeBindingMethodFromDart != nullptr) {
52+
if (contextId != null &&
53+
pointer != null &&
54+
pointer.ref.invokeBindingMethodFromDart != nullptr &&
55+
event.target?.pointer?.ref.disposed != true &&
56+
event.currentTarget?.pointer?.ref.disposed != true
57+
) {
5358
BindingObject bindingObject = controller.view.getBindingObject(pointer);
5459
// Call methods implements at C++ side.
5560
DartInvokeBindingMethodsFromDart f = pointer.ref.invokeBindingMethodFromDart.asFunction();

0 commit comments

Comments
 (0)