sandwiches.
* debug.c, eval.c: Fix buggy uses of SCM_ALLOW_INTS (missing
semicolon) exposed by the above change.
extern unsigned int scm_async_clock;
#define SCM_ASYNC_TICK \
-{ \
+do { \
if (0 == --scm_async_clock) \
scm_async_click (); \
-} \
+} while(0)
#ifdef SCM_CAREFUL_INTS
#define SCM_CHECK_NOT_DISABLED \
#endif
#define SCM_DEFER_INTS \
-{ \
+do { \
SCM_FENCE; \
SCM_CHECK_NOT_DISABLED; \
SCM_THREAD_DEFER; \
SCM_FENCE; \
scm_ints_disabled = 1; \
SCM_FENCE; \
-} \
+} while (0)
#define SCM_ALLOW_INTS_ONLY \
-{ \
+do { \
SCM_THREAD_ALLOW; \
scm_ints_disabled = 0; \
-} \
+} while (0)
#define SCM_ALLOW_INTS \
-{ \
+do { \
SCM_FENCE; \
SCM_CHECK_NOT_ENABLED; \
SCM_THREAD_SWITCHING_CODE; \
SCM_THREAD_ALLOW; \
SCM_ASYNC_TICK; \
SCM_FENCE; \
-} \
+} while (0)
#define SCM_REDEFER_INTS \
-{ \
+do { \
SCM_FENCE; \
SCM_THREAD_REDEFER; \
++scm_ints_disabled; \
SCM_FENCE; \
-} \
+} while (0)
#define SCM_REALLOW_INTS \
-{ \
+do { \
SCM_FENCE; \
SCM_THREAD_REALLOW_1; \
SCM_THREAD_SWITCHING_CODE; \
SCM_ASYNC_TICK; \
} \
SCM_FENCE; \
-} \
+} while (0)
#define SCM_TICK \
-{ \
+do { \
SCM_DEFER_INTS; \
SCM_ALLOW_INTS; \
-} \
+} while (0)
\f
SCM_RESET_DEBUG_MODE;
scm_stack_checking_enabled_p = SCM_STACK_CHECKING_P;
scm_debug_eframe_size = 2 * SCM_N_FRAMES;
- SCM_ALLOW_INTS
+ SCM_ALLOW_INTS;
return ans;
}
SCM_N_EVALUATOR_TRAPS,
s_evaluator_traps);
SCM_RESET_DEBUG_MODE;
- SCM_ALLOW_INTS
+ SCM_ALLOW_INTS;
return ans;
}