1. 22 Jun, 2015 1 commit
    • 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.
  2. 18 May, 2015 1 commit
    • Brad King's avatar
      Fix assertion failure on unmatched foreach in function (#15572) · 3a656065
      Brad King authored
      The lexical scope counting added by commit v3.2.0-rc1~332^2~1 (Track
      nested loop levels in CMake language with a stack of counters,
      2014-11-18) forgot to account for scopes popped by error messages about
      unclosed scopes.  Teach the error handler to pop the lexical scope it
      reports as unclosed.  Re-order the lexical scope RAII object to be
      inside the variable scope RAII object scope so that the lexical scope
      is fully closed before we check assertions about variable scopes.
      Extend the RunCMake.Syntax test with a case covering this.
  3. 13 Apr, 2015 1 commit
  4. 10 Apr, 2015 3 commits
  5. 09 Apr, 2015 5 commits
  6. 01 Apr, 2015 2 commits
  7. 26 Mar, 2015 5 commits
  8. 25 Mar, 2015 1 commit
    • Betsy McPhail's avatar
      file(LOCK): Close file descriptor/handle when releasing a lock · 1f289095
      Betsy McPhail authored and Brad King's avatar Brad King committed
      The file lock functionality added in commit v3.2.0-rc1~297^2~1 (file:
      Add LOCK subcommand to do file and directory locking, 2014-11-26) forgot
      to close the lock file descriptors.  Eventually it was possible to run
      out of file descriptors and locks could not longer be acquired.  Fix
      this by closing the file descriptor or handle when we are done with it.
      Also set the member back to the initial value from the constructor
      to leave everything in a consistent state (useful for debugging).
      Co-Author: Ruslan Baratov <ruslan_baratov@yahoo.com>
  9. 10 Mar, 2015 1 commit
  10. 09 Mar, 2015 7 commits
  11. 06 Mar, 2015 2 commits
    • Brad King's avatar
    • Brad King's avatar
      Makefile: Fix multiple custom command outputs regression (#15116) · 66a9c90c
      Brad King authored
      In commit v3.2.0-rc1~272^2~2 (Makefile: Fix rebuild with multiple custom
      command outputs, 2014-12-05) we changed the generated makefile pattern
      for multiple outputs from
        out1: depends...
        out2: out1
        out1 out2: depends...
      This was based on the incorrect assumption that make tools would treat
      this as a combined output rule and run the command(s) exactly once for
      them.  It turns out that instead this new pattern is equivalent to
        out1: depends...
        out2: depends...
      so the commands may be run more than once.
      Some documents suggest using a "dedicated witness" stamp file:
        stamp: depends...
                rm -f stamp
                touch stamp.tmp
                mv stamp.tmp stamp
        out1 out2: stamp
      However, if the commands fail the error message will refer to the stamp
      instead of any of the real outputs, which may be confusing to readers.
      Also, this approach seems to have the same behavior of the original
      approach that motiviated the above commit: multiple invocations are
      needed to bring consumers of the outputs up to date.
      Instead we can return to the original approach but add an explicit
      touch to each extra output rule:
        out1: depends...
        out2: out1
                touch -c out2
      This causes make tools to recognize that all outputs have changed and
      therefore to execute any commands that consume them.
  12. 03 Mar, 2015 1 commit
  13. 02 Mar, 2015 2 commits
  14. 28 Feb, 2015 2 commits
  15. 27 Feb, 2015 2 commits
  16. 26 Feb, 2015 2 commits
  17. 24 Feb, 2015 2 commits