|
@@ -10,10 +10,14 @@
|
|
|
NSUInteger const kFLEXKnownUnsafeClassCount = 19;
|
|
NSUInteger const kFLEXKnownUnsafeClassCount = 19;
|
|
|
Class * _UnsafeClasses = NULL;
|
|
Class * _UnsafeClasses = NULL;
|
|
|
CFSetRef FLEXKnownUnsafeClasses = nil;
|
|
CFSetRef FLEXKnownUnsafeClasses = nil;
|
|
|
|
|
+CFSetRef FLEXKnownUnsafeIvars = nil;
|
|
|
|
|
|
|
|
#define FLEXClassPointerOrCFNull(name) \
|
|
#define FLEXClassPointerOrCFNull(name) \
|
|
|
(NSClassFromString(name) ?: (__bridge id)kCFNull)
|
|
(NSClassFromString(name) ?: (__bridge id)kCFNull)
|
|
|
|
|
|
|
|
|
|
+#define FLEXIvarOrCFNull(cls, name) \
|
|
|
|
|
+ (class_getInstanceVariable([cls class], name) ?: (void *)kCFNull)
|
|
|
|
|
+
|
|
|
__attribute__((constructor))
|
|
__attribute__((constructor))
|
|
|
void FLEXRuntimeSafteyInit() {
|
|
void FLEXRuntimeSafteyInit() {
|
|
|
FLEXKnownUnsafeClasses = CFSetCreate(
|
|
FLEXKnownUnsafeClasses = CFSetCreate(
|
|
@@ -22,6 +26,17 @@ void FLEXRuntimeSafteyInit() {
|
|
|
kFLEXKnownUnsafeClassCount,
|
|
kFLEXKnownUnsafeClassCount,
|
|
|
nil
|
|
nil
|
|
|
);
|
|
);
|
|
|
|
|
+
|
|
|
|
|
+ Ivar unsafeIvars[] = {
|
|
|
|
|
+ FLEXIvarOrCFNull(NSURL, "_urlString"),
|
|
|
|
|
+ FLEXIvarOrCFNull(NSURL, "_baseURL"),
|
|
|
|
|
+ };
|
|
|
|
|
+ FLEXKnownUnsafeIvars = CFSetCreate(
|
|
|
|
|
+ kCFAllocatorDefault,
|
|
|
|
|
+ (const void **)unsafeIvars,
|
|
|
|
|
+ sizeof(unsafeIvars),
|
|
|
|
|
+ nil
|
|
|
|
|
+ );
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
const Class * FLEXKnownUnsafeClassList() {
|
|
const Class * FLEXKnownUnsafeClassList() {
|