@@ -1141,6 +1141,11 @@ namespace CefSharp
1141
1141
1142
1142
auto objectRepository = browserAdapter->JavascriptObjectRepository ;
1143
1143
1144
+ if (objectRepository == nullptr )
1145
+ {
1146
+ return true ;
1147
+ }
1148
+
1144
1149
auto callbackId = GetInt64 (argList, 0 );
1145
1150
auto objectNames = argList->GetList (1 );
1146
1151
@@ -1173,6 +1178,11 @@ namespace CefSharp
1173
1178
1174
1179
auto objectRepository = browserAdapter->JavascriptObjectRepository ;
1175
1180
1181
+ if (objectRepository == nullptr )
1182
+ {
1183
+ return true ;
1184
+ }
1185
+
1176
1186
auto boundObjects = argList->GetList (0 );
1177
1187
auto objs = gcnew List<Tuple<String^, bool , bool >^>(boundObjects->GetSize ());
1178
1188
for (size_t i = 0 ; i < boundObjects->GetSize (); i++)
@@ -1346,6 +1356,15 @@ namespace CefSharp
1346
1356
}
1347
1357
1348
1358
auto callbackFactory = browserAdapter->JavascriptCallbackFactory ;
1359
+ auto methodRunnerQueue = browserAdapter->MethodRunnerQueue ;
1360
+
1361
+ // Dispose is called on a different thread, so there's a chance
1362
+ // dispose is called after our IsDisposed checks, make sure we have
1363
+ // actual references.
1364
+ if (callbackFactory == nullptr || methodRunnerQueue == nullptr )
1365
+ {
1366
+ return true ;
1367
+ }
1349
1368
1350
1369
auto frameId = frame->GetIdentifier ();
1351
1370
auto objectId = GetInt64 (argList, 0 );
@@ -1358,7 +1377,7 @@ namespace CefSharp
1358
1377
methodInvocation->Parameters ->Add (DeserializeObject (arguments, i, callbackFactory));
1359
1378
}
1360
1379
1361
- browserAdapter-> MethodRunnerQueue ->Enqueue (methodInvocation);
1380
+ methodRunnerQueue ->Enqueue (methodInvocation);
1362
1381
1363
1382
handled = true ;
1364
1383
}
0 commit comments