~ chicken-core (chicken-5) 0e40203385cb9acfcb9797e04b15c09f93ffce5f
commit 0e40203385cb9acfcb9797e04b15c09f93ffce5f Author: Peter Bex <peter@more-magic.net> AuthorDate: Fri Jul 31 09:35:33 2015 +0200 Commit: Peter Bex <peter@more-magic.net> CommitDate: Fri Jul 31 09:35:33 2015 +0200 Fix C_kontinue block to use do..while construct, thanks to Florian Zumbiehl diff --git a/chicken.h b/chicken.h index af365d51..9166f223 100644 --- a/chicken.h +++ b/chicken.h @@ -1219,7 +1219,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