Unfortunately this revealed a deeper problem with the brk_string code.
To fix it:
- remove sharing of the buffer between brk_string invocations
- change the semantics of brk_string so that the argument array
starts with 0, and return the buffer where the strings are
stored
var.c: Minor memory leak plugged.
suff.c: Don't add extra sources on the null suffix if it has dependency
lines or commands attached to it [POSIX says so]
The following two patches fix a couple of problems with make(1)
1. Null Suffixes were not being copied, but they were being free'd
This caused rules of the form:
.c:
${CC} ...
to access invalid memory and potentially core dump..
[That was always broken; I did not break that one :-)]
2. My recent fixes to parse ${VAR:%.foo=%.bar} handled the null string
case incorrectly (${VAR:=.c} was broken).