From c6862a210f48ee4fd2d7fe7ad0e4eca11bea9963 Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Thu, 24 Oct 2013 21:49:52 -0700 Subject: Ouch! Turns out the code base has numerous unintended deviations from C90, like mixed declations and statements. GCC doesn't diagnose these without the --pedantic flag. * configure: GCC's --ansi flag should be spelled -ansi. * lib.c (split_str, obj_print): Reorder declaration before statements. (make_sym): Fix similar problem by eliminating a statement. (funcall1, funcall2, funcall3, funcall4): Use assignment to initialize local array with non-constant elements. This is actually good for performance because we only initialize those parts of the array that we use. * lib.h (struct func): Change functype member to unsigned, since enum-typed bitfields are a GCC extension. * match.c (ml_all, mf_all): Use assignments to initialize local struct with non-constants. (do_txeval, v_collect): Slightly revise unwinding macrology with help of new macros to avoid mixing declarations and statements. (spec_bind): Removed spurious semicolon from macro expansion. (v_gather): Reorder two lines to avoid mixed decls and statements. (match_filter): Move declaration of ret a few lines up, ahead of statements. * unwind.c (uw_pop_until): New function. * unwind.h (uw_pop_until): Declared. (uw_mark_frame, uw_fast_return): New macros. --- unwind.c | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'unwind.c') diff --git a/unwind.c b/unwind.c index e76ace02..35084a81 100644 --- a/unwind.c +++ b/unwind.c @@ -187,6 +187,12 @@ void uw_pop_frame(uw_frame_t *fr) } } +void uw_pop_until(uw_frame_t *fr) +{ + while (uw_stack != fr) + uw_pop_frame(uw_stack); +} + uw_frame_t *uw_current_frame(void) { return uw_stack; -- cgit v1.2.3