Skip to content

Commit cef4d41

Browse files
committed
patch libdispatch BlocksRuntime header
libBlocksRuntime does not export the symbols correctly when building on Windows.
1 parent 0c34941 commit cef4d41

File tree

1 file changed

+53
-0
lines changed

1 file changed

+53
-0
lines changed
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
diff --git a/src/BlocksRuntime/Block_private.h b/src/BlocksRuntime/Block_private.h
2+
index b2e1512..df6fa19 100644
3+
--- a/src/BlocksRuntime/Block_private.h
4+
+++ b/src/BlocksRuntime/Block_private.h
5+
@@ -197,9 +197,17 @@ BLOCK_EXPORT bool _Block_tryRetain(const void *aBlock);
6+
// Callable only from the ARR weak subsystem while in exclusion zone
7+
BLOCK_EXPORT bool _Block_isDeallocating(const void *aBlock);
8+
9+
-
10+
// the raw data space for runtime classes for blocks
11+
// class+meta used for stack, malloc, and collectable based blocks
12+
+#if defined(_WIN32)
13+
+extern void * _NSConcreteMallocBlock[32];
14+
+extern void * _NSConcreteAutoBlock[32];
15+
+extern void * _NSConcreteFinalizingBlock[32];
16+
+extern void * _NSConcreteWeakBlockVariable[32];
17+
+// declared in Block.h
18+
+// extern void * _NSConcreteGlobalBlock[32];
19+
+// extern void * _NSConcreteStackBlock[32];
20+
+#else
21+
BLOCK_EXPORT void * _NSConcreteMallocBlock[32];
22+
BLOCK_EXPORT void * _NSConcreteAutoBlock[32];
23+
BLOCK_EXPORT void * _NSConcreteFinalizingBlock[32];
24+
@@ -207,6 +215,7 @@ BLOCK_EXPORT void * _NSConcreteWeakBlockVariable[32];
25+
// declared in Block.h
26+
// BLOCK_EXPORT void * _NSConcreteGlobalBlock[32];
27+
// BLOCK_EXPORT void * _NSConcreteStackBlock[32];
28+
+#endif
29+
30+
31+
// the intercept routines that must be used under GC
32+
diff --git a/src/BlocksRuntime/data.c b/src/BlocksRuntime/data.c
33+
index fe4745b..f96ea25 100644
34+
--- a/src/BlocksRuntime/data.c
35+
+++ b/src/BlocksRuntime/data.c
36+
@@ -19,12 +19,15 @@ We keep these in a separate file so that we can include the runtime code in test
37+
#if defined(_WIN32)
38+
void * _NSConcreteStackBlock[32] = { 0 };
39+
void * _NSConcreteGlobalBlock[32] = { 0 };
40+
+void * _NSConcreteMallocBlock[32] = { 0 };
41+
+void * _NSConcreteAutoBlock[32] = { 0 };
42+
+void * _NSConcreteFinalizingBlock[32] = { 0 };
43+
+void * _NSConcreteWeakBlockVariable[32] = { 0 };
44+
#else
45+
BLOCK_ABI void * _NSConcreteStackBlock[32] = { 0 };
46+
BLOCK_ABI void * _NSConcreteGlobalBlock[32] = { 0 };
47+
-#endif
48+
-
49+
BLOCK_ABI void * _NSConcreteMallocBlock[32] = { 0 };
50+
BLOCK_ABI void * _NSConcreteAutoBlock[32] = { 0 };
51+
BLOCK_ABI void * _NSConcreteFinalizingBlock[32] = { 0 };
52+
BLOCK_ABI void * _NSConcreteWeakBlockVariable[32] = { 0 };
53+
+#endif

0 commit comments

Comments
 (0)