~ chicken-core (chicken-5) 366a299a98061c9318de9bffc3834c490fb4ca1b


commit 366a299a98061c9318de9bffc3834c490fb4ca1b
Author:     Peter Bex <peter@more-magic.net>
AuthorDate: Sat Aug 22 18:20:10 2015 +0200
Commit:     Peter Bex <peter@more-magic.net>
CommitDate: Sat Aug 22 19:37:27 2015 +0200

    Fix C_kontinue block to use do..while construct, thanks to Florian Zumbiehl

diff --git a/chicken.h b/chicken.h
index 33fd4a6d..4b573135 100644
--- a/chicken.h
+++ b/chicken.h
@@ -1288,7 +1288,7 @@ typedef void (C_ccall *C_proc)(C_word, C_word *) C_noret;
 #define C_block_address(ptr, n, x)      C_a_unsigned_int_to_num(ptr, n, x)
 #define C_offset_pointer(x, y)          (C_pointer_address(x) + (y))
 #define C_do_apply(c, av)               ((C_proc)(void *)C_block_item((av)[0], 0))((c), (av))
-#define C_kontinue(k, r)                { C_word avk[ 2 ]; avk[ 0 ] = (k); avk[ 1 ] = (r); ((C_proc)(void *)C_block_item((k),0))(2, avk); }
+#define C_kontinue(k, r)                do { C_word avk[ 2 ]; avk[ 0 ] = (k); avk[ 1 ] = (r); ((C_proc)(void *)C_block_item((k),0))(2, avk); } while(0)
 #define C_fetch_byte(x, p)              (((unsigned C_byte *)C_data_pointer(x))[ p ])
 #define C_poke_integer(x, i, n)         (C_set_block_item(x, C_unfix(i), C_num_to_int(n)), C_SCHEME_UNDEFINED)
 #define C_pointer_to_block(p, x)        (C_set_block_item(p, 0, (C_word)C_data_pointer(x)), C_SCHEME_UNDEFINED)
Trap