From 2fb1194cec49fd7af883c918f733bd237f1cb318 Mon Sep 17 00:00:00 2001 From: David Chisnall Date: Wed, 21 Aug 2019 15:04:16 +0100 Subject: [PATCH] Add test case for weak ref issue. This test now fails deterministically, which should make fixing it easier. --- Test/CMakeLists.txt | 1 + Test/WeakRefLoad.m | 22 ++++++++++++++++++++++ 2 files changed, 23 insertions(+) create mode 100644 Test/WeakRefLoad.m diff --git a/Test/CMakeLists.txt b/Test/CMakeLists.txt index 9e292a7..09e5902 100644 --- a/Test/CMakeLists.txt +++ b/Test/CMakeLists.txt @@ -37,6 +37,7 @@ set(TESTS ResurrectInDealloc_arc.m RuntimeTest.m WeakBlock_arc.m + WeakRefLoad.m WeakReferences_arc.m WeakImportClass.m ivar_arc.m diff --git a/Test/WeakRefLoad.m b/Test/WeakRefLoad.m new file mode 100644 index 0000000..c851638 --- /dev/null +++ b/Test/WeakRefLoad.m @@ -0,0 +1,22 @@ +#include "Test.h" + +#define SIZE 5000 + +int main(int argc, const char * argv[]) +{ + id t = [Test new]; + id w1; + id w2; + objc_initWeak(&w1, t); + objc_initWeak(&w2, t); + [t release]; + assert(objc_loadWeakRetained(&w1) == nil); + assert(objc_loadWeakRetained(&w2) == nil); + assert(w1 == nil); + assert(w2 == nil); + assert(objc_loadWeakRetained(&w1) == nil); + assert(objc_loadWeakRetained(&w2) == nil); + assert(w1 == nil); + assert(w2 == nil); + return 0; +}