Hi,

there are 2 bugs in function subst_expand().

To checkout both take the following makefile, 123.mk:

-------123.mk--------
 $(warning value[text] = $(value text))
 $(warning text = $(text))
 $(warning value[a] = $(value a))
 $(warning a = $(a))

 $(error aus)

-------123.mk--------


bug1)

$ make -f 123.mk a="\$(patsubst Subst,Repl,AnyWordThatEndsWithSubstSubst)"
123.mk:1: value[text] =
123.mk:2: text =
123.mk:3: value[a] = $(patsubst Subst,Repl,AnyWordThatEndsWithSubstSubst)
123.mk:4: a = AnyWordThatEndsWithSubstRepl
123.mk:6: *** aus.  Stop.

correct would be:
123.mk:4: a = AnyWordThatEndsWithSubstSubst

fix:
replace "if ((by_word  && ((p > t && ..."
with    "if ((by_word  && ((p > text && ..."


bug2)

$ make -f 123.mk text="preQWEpre preQWEpre1 2preQWEpre 3preQWEpreQWEpre" 
a="\$(text:preQWEpre=REPL)"
123.mk:1: value[text] = preQWEpre preQWEpre1 2preQWEpre 3preQWEpreQWEpre
123.mk:2: text = preQWEpre preQWEpre1 2preQWEpre 3preQWEpreQWEpre
123.mk:3: value[a] = $(text:preQWEpre=REPL)
123.mk:4: a = REPL preQWEpre1 2REPL 3preQWEpreQWEpre
123.mk:6: *** aus.  Stop.

correct would be:
123.mk:4: a = REPL preQWEpre1 2REPL 3preQWEREPL

fix:
not so trivial ... when found suffix inside word, starting at t, then dont
do {t += slen}, instead do {t = end_of_token(t/*+slen-1*/) - slen}.


Regards,
Markus.





_______________________________________________
Bug-make mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/bug-make

Reply via email to