iOS: fix posibblely mutated crash when onException
This commit is contained in:
parent
e042ce732e
commit
fe060bdb7f
@ -72,7 +72,7 @@ @interface DoricRegistry ()
|
||||
|
||||
@property(nonatomic, strong) NSMutableDictionary *plugins;
|
||||
@property(nonatomic, strong) NSMutableDictionary *nodes;
|
||||
@property(nonatomic, strong) NSMutableSet <id <DoricMonitorProtocol>> *monitors;
|
||||
@property(nonatomic, copy) NSSet <id <DoricMonitorProtocol>> *monitors;
|
||||
@property(nonatomic, weak) DoricJSEngine *jsEngine;
|
||||
@end
|
||||
|
||||
@ -93,7 +93,7 @@ - (instancetype)initWithJSEngine:(DoricJSEngine *)jsEngine {
|
||||
_jsEngine = jsEngine;
|
||||
_plugins = [NSMutableDictionary new];
|
||||
_nodes = [NSMutableDictionary new];
|
||||
_monitors = [NSMutableSet new];
|
||||
_monitors = [NSSet new];
|
||||
_loaderManager = [DoricResourceManager new];
|
||||
[self innerRegister];
|
||||
[DoricSingleton.instance.libraries enumerateObjectsUsingBlock:^(DoricLibrary *obj, BOOL *stop) {
|
||||
@ -184,7 +184,9 @@ - (void)innerSetEnvironmentValue:(NSDictionary *)value {
|
||||
}
|
||||
|
||||
- (void)registerMonitor:(id <DoricMonitorProtocol>)monitor {
|
||||
[self.monitors addObject:monitor];
|
||||
NSMutableSet *mutableSet = [self.monitors mutableCopy];
|
||||
[mutableSet addObject:monitor];
|
||||
self.monitors = mutableSet;
|
||||
}
|
||||
|
||||
- (void)onException:(NSException *)exception inContext:(DoricContext *)context {
|
||||
|
@ -100,6 +100,7 @@ - (instancetype)init {
|
||||
@"localeLanguage": [[NSLocale currentLocale] objectForKey:NSLocaleLanguageCode] ?: @"",
|
||||
@"localeCountry": [[NSLocale currentLocale] objectForKey:NSLocaleCountryCode] ?: @"",
|
||||
}.mutableCopy;
|
||||
[self.registry registerMonitor:[DoricDefaultMonitor new]];
|
||||
[self ensureRunOnJSThread:^() {
|
||||
[self.profile start:@"Init"];
|
||||
self.timers = [[NSMutableDictionary alloc] init];
|
||||
@ -111,7 +112,6 @@ - (instancetype)init {
|
||||
self.initialized = YES;
|
||||
[self.profile end:@"Init"];
|
||||
}];
|
||||
[self.registry registerMonitor:[DoricDefaultMonitor new]];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
Reference in New Issue
Block a user