[SV #39035] Compare OUT to the beginning of the OUT var/func, not IN.

This commit is contained in:
Paul Smith 2013-05-26 13:56:51 -04:00
parent d2eaed1f0a
commit bf60bbd67a
4 changed files with 34 additions and 1 deletions

View file

@ -1,3 +1,8 @@
2013-05-26 Paul Smith <psmith@gnu.org>
* job.c (new_job): Compare OUT to the beginning of the OUT
var/function, not IN. Fixes Savannah bug #39035.
2013-05-22 Paul Smith <psmith@gnu.org>
* main.c (switches[]): Order switches so simple flags all come first.

4
job.c
View file

@ -2036,10 +2036,12 @@ new_job (struct file *file)
{
char openparen = *ref;
char closeparen = openparen == '(' ? ')' : '}';
char *outref;
int count;
char *p;
*out++ = *in++; /* Copy OPENPAREN. */
outref = out;
/* IN now points past the opening paren or brace.
Count parens or braces until it is matched. */
count = 0;
@ -2072,7 +2074,7 @@ new_job (struct file *file)
/* Discard any preceding whitespace that has
already been written to the output. */
while (out > ref
while (out > outref
&& isblank ((unsigned char)out[-1]))
--out;

View file

@ -1,3 +1,7 @@
2013-05-26 Paul Smith <psmith@gnu.org>
* scripts/misc/bs-nl: Test for Savannah bug #39035.
2013-05-22 Paul Smith <psmith@gnu.org>
* scripts/options/dash-n: Fix results after MAKEFLAGS fixes.

View file

@ -99,4 +99,26 @@ var = he\
var:;@echo '|$(var)|'!,
'', "|he llo|");
# Savannah #39035: handle whitespace in call
run_make_test(q!
f = echo $(1)
t:; @$(call f,"a \
b"); \
$(call f,"a \
b")
!,
'', "a b\na b\n");
# Savannah #38945: handle backslash CRLF
# We need our own makefile so we can set binmode
my $m1 = get_tmpfile();
open(MAKEFILE, "> $m1");
binmode(MAKEFILE);
print MAKEFILE "FOO = foo \\\r\nbar\nall: ; \@echo \$(FOO)\n";
close(MAKEFILE);
run_make_with_options($m1, '', get_logfile());
compare_output("foo bar\n", get_logfile(1));
1;