summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSam Bingner <sam@bingner.com>2019-10-23 23:06:19 -1000
committerSam Bingner <sam@bingner.com>2019-10-23 23:06:19 -1000
commit00a7cd052348ce98b47bb7022d53293daff0a33e (patch)
treed1477d5f43a27207b368e92fb46a22e517951b33
parent931ece7fc1f36fb6f4964af513e8d397b56ef36a (diff)
Workaround for what appears to be an iOS bug
-rw-r--r--sbreload.m19
1 files changed, 15 insertions, 4 deletions
diff --git a/sbreload.m b/sbreload.m
index e36134f..85b8e17 100644
--- a/sbreload.m
+++ b/sbreload.m
@@ -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;