Skip to content
  • Brad King's avatar
    Fix assertion failure on unmatched function or macro · 5d85fb4f
    Brad King authored
    The fix in commit v3.2.3~3^2 (Fix assertion failure on unmatched foreach
    in function, 2015-05-18) broke handling of unmatched non-loop blocks
    because it assumed all function blockers removed during error unwinding
    were for loops, essentially switching the set of mishandled cases.
    
    The purpose of the loop block push/pop operations is to define a scope
    matching the lifetime of the loop function blockers.  Since our function
    blockers already have the proper lifetime, simply move the push/pop
    operations to their constructor/destructor.
    
    Extend the RunCMake.Syntax test with a case covering this.
    5d85fb4f