diff --git a/ChangeLog b/ChangeLog index ff5bec59..498ad56f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2013-05-26 Paul Smith + * read.c (readline): To be safe, move the entire buffer if we + detect a CR. Fixes Savannah bug #38945. + * job.c (new_job): Compare OUT to the beginning of the OUT var/function, not IN. Fixes Savannah bug #39035. diff --git a/read.c b/read.c index 36d3a8fa..d6e6fcb1 100644 --- a/read.c +++ b/read.c @@ -2542,7 +2542,7 @@ readline (struct ebuffer *ebuf) if ((p - start) > 1 && p[-2] == '\r') { --p; - p[-1] = '\n'; + memmove (p-1, p, strlen (p) + 1); } #endif diff --git a/tests/ChangeLog b/tests/ChangeLog index 1f93930f..7f1bd3cf 100644 --- a/tests/ChangeLog +++ b/tests/ChangeLog @@ -1,6 +1,7 @@ 2013-05-26 Paul Smith * scripts/misc/bs-nl: Test for Savannah bug #39035. + Add a test for Savannah bug #38945. 2013-05-22 Paul Smith diff --git a/tests/scripts/misc/bs-nl b/tests/scripts/misc/bs-nl index aa7661ea..4fc3f639 100644 --- a/tests/scripts/misc/bs-nl +++ b/tests/scripts/misc/bs-nl @@ -114,10 +114,15 @@ t:; @$(call f,"a \ my $m1 = get_tmpfile(); open(MAKEFILE, "> $m1"); binmode(MAKEFILE); -print MAKEFILE "FOO = foo \\\r\nbar\nall: ; \@echo \$(FOO)\n"; +print MAKEFILE "FOO = foo \\\r\n"; close(MAKEFILE); -run_make_with_options($m1, '', get_logfile()); +my $m2 = get_tmpfile(); +open(MAKEFILE, "> $m2"); +print MAKEFILE "include $m1\ndefine BAR\nall: ; \@echo \$(FOO) bar\nendef\n\$(eval \$(BAR))\n"; +close(MAKEFILE); + +run_make_with_options($m2, '', get_logfile()); compare_output("foo bar\n", get_logfile(1));