diff options
author | Sam Bingner <sam@bingner.com> | 2019-10-23 23:06:19 -1000 |
---|---|---|
committer | Sam Bingner <sam@bingner.com> | 2019-10-23 23:06:19 -1000 |
commit | 00a7cd052348ce98b47bb7022d53293daff0a33e (patch) | |
tree | d1477d5f43a27207b368e92fb46a22e517951b33 | |
parent | 931ece7fc1f36fb6f4964af513e8d397b56ef36a (diff) |
Workaround for what appears to be an iOS bug
-rw-r--r-- | sbreload.m | 19 |
1 files changed, 15 insertions, 4 deletions
@@ -49,6 +49,7 @@ #define FLAG_PLATFORMIZE (1 << 1) #include <dlfcn.h> #include <objc/runtime.h> +#include <xpc/xpc.h> @interface FBSSystemService +(id)sharedService; @@ -143,16 +144,26 @@ CF2launch_data(CFTypeRef cfr) case kCFNumberLongType: case kCFNumberLongLongType: CFNumberGetValue(cfr, kCFNumberLongLongType, &n); - r = launch_data_alloc(LAUNCH_DATA_INTEGER); - launch_data_set_integer(r, n); + if (kCFCoreFoundationVersionNumber >= 1443.00) { + r = (launch_data_t)xpc_int64_create(n); + } else { + // This hangs forever if I call it on new iOS??? + r = launch_data_alloc(LAUNCH_DATA_INTEGER); + launch_data_set_integer(r, n); + } break; case kCFNumberFloat32Type: case kCFNumberFloat64Type: case kCFNumberFloatType: case kCFNumberDoubleType: CFNumberGetValue(cfr, kCFNumberDoubleType, &d); - r = launch_data_alloc(LAUNCH_DATA_REAL); - launch_data_set_real(r, d); + if (kCFCoreFoundationVersionNumber >= 1443.00) { + r = (launch_data_t)xpc_double_create(d); + } else { + // Not sure if this hangs, but added to be safe + r = launch_data_alloc(LAUNCH_DATA_REAL); + launch_data_set_real(r, d); + } break; default: r = NULL; |