diff options
Diffstat (limited to 'BlocksRuntime/tests/dispatch_call_Block_with_release.c')
-rw-r--r-- | BlocksRuntime/tests/dispatch_call_Block_with_release.c | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/BlocksRuntime/tests/dispatch_call_Block_with_release.c b/BlocksRuntime/tests/dispatch_call_Block_with_release.c new file mode 100644 index 000000000000..9e06f69ba762 --- /dev/null +++ b/BlocksRuntime/tests/dispatch_call_Block_with_release.c @@ -0,0 +1,31 @@ +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. + +#include <stdio.h> +#include <Block.h> + +// CONFIG + +void callsomething(const char *format, int argument) { +} + +void +dispatch_call_Block_with_release2(void *block) +{ + void (^b)(void) = (void (^)(void))block; + b(); + Block_release(b); +} + +int main(int argc, char *argv[]) { + void (^b1)(void) = ^{ callsomething("argc is %d\n", argc); }; + void (^b2)(void) = ^{ callsomething("hellow world\n", 0); }; // global block now + + dispatch_call_Block_with_release2(Block_copy(b1)); + dispatch_call_Block_with_release2(Block_copy(b2)); + printf("%s: Success\n", argv[0]); + return 0; +} |