Overview
Comment: | OFBlockTests: Also disable global blocks on Win64
While these work on the officially by ObjFW supported MSYS2/CLANG64 |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
00b1d9d7b65c01afe7c39157dafab139 |
User & Date: | js on 2023-10-19 20:46:17 |
Other Links: | manifest | tags |
Context
2023-10-20
| ||
21:15 | GitHub Actions: Remove *BSD check-in: dead6a61cc user: js tags: trunk | |
2023-10-19
| ||
20:47 | OFBlockTests: Also disable global blocks on Win64 check-in: 31e1fdf934 user: js tags: 1.0 | |
20:46 | OFBlockTests: Also disable global blocks on Win64 check-in: 00b1d9d7b6 user: js tags: trunk | |
20:25 | Add PGP keys to the repo check-in: 1a48a6c7cc user: js tags: trunk | |
Changes
Modified tests/OFBlockTests.m from [0ba4bbb116] to [1dba22b1d2].
︙ | ︙ | |||
26 27 28 29 30 31 32 | #elif defined(OF_APPLE_RUNTIME) extern void *_NSConcreteStackBlock; extern void *_NSConcreteGlobalBlock; extern void *_NSConcreteMallocBlock; #endif /* Clang on Win32 generates broken code that crashes for global blocks. */ | | | 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | #elif defined(OF_APPLE_RUNTIME) extern void *_NSConcreteStackBlock; extern void *_NSConcreteGlobalBlock; extern void *_NSConcreteMallocBlock; #endif /* Clang on Win32 generates broken code that crashes for global blocks. */ #if !defined(OF_WINDOWS) || !defined(__clang__) static void (^globalBlock)(void) = ^ {}; #endif static int (^returnStackBlock(void))(void) { __block int i = 42; |
︙ | ︙ | |||
68 69 70 71 72 73 74 | void (^mallocBlock)(void); int (^voidBlock)(void); TEST(@"Class of stack block", (Class)&_NSConcreteStackBlock == objc_getClass("OFStackBlock") && [stackBlock isKindOfClass: [OFBlock class]]) | | | | | 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 | void (^mallocBlock)(void); int (^voidBlock)(void); TEST(@"Class of stack block", (Class)&_NSConcreteStackBlock == objc_getClass("OFStackBlock") && [stackBlock isKindOfClass: [OFBlock class]]) #if !defined(OF_WINDOWS) || !defined(__clang__) TEST(@"Class of global block", (Class)&_NSConcreteGlobalBlock == objc_getClass("OFGlobalBlock") && [globalBlock isKindOfClass: [OFBlock class]]) #endif TEST(@"Class of a malloc block", (Class)&_NSConcreteMallocBlock == objc_getClass("OFMallocBlock")) TEST(@"Copying a stack block", (mallocBlock = [[stackBlock copy] autorelease]) && [mallocBlock class] == objc_getClass("OFMallocBlock") && [mallocBlock isKindOfClass: [OFBlock class]]) TEST(@"Copying a stack block and referencing its variable", forwardTest() == 5) TEST(@"Copying a stack block and using its copied variable", (voidBlock = returnStackBlock()) && voidBlock() == 43 && voidBlock() == 44 && voidBlock() == 45) #if !defined(OF_WINDOWS) || !defined(__clang__) TEST(@"Copying a global block", (id)globalBlock == [[globalBlock copy] autorelease]) #endif #ifndef __clang_analyzer__ TEST(@"Copying a malloc block", (id)mallocBlock == [mallocBlock copy] && [mallocBlock retainCount] == 2) #endif TEST(@"Autorelease a stack block", R([stackBlock autorelease])) #if !defined(OF_WINDOWS) || !defined(__clang__) TEST(@"Autorelease a global block", R([globalBlock autorelease])) #endif #ifndef __clang_analyzer__ TEST(@"Autorelease a malloc block", R([mallocBlock autorelease])) #endif objc_autoreleasePoolPop(pool); } @end |