Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/usr.bin/make make(1): re-add improved assertion in ParseGetLine



details:   https://anonhg.NetBSD.org/src/rev/242220cf802e
branches:  trunk
changeset: 958068:242220cf802e
user:      rillig <rillig%NetBSD.org@localhost>
date:      Tue Dec 22 08:51:30 2020 +0000

description:
make(1): re-add improved assertion in ParseGetLine

diffstat:

 usr.bin/make/parse.c                 |   6 +++---
 usr.bin/make/unit-tests/opt-file.exp |   1 +
 usr.bin/make/unit-tests/opt-file.mk  |  11 ++++++++++-
 3 files changed, 14 insertions(+), 4 deletions(-)

diffs (69 lines):

diff -r b59b9c813dd5 -r 242220cf802e usr.bin/make/parse.c
--- a/usr.bin/make/parse.c      Tue Dec 22 08:31:13 2020 +0000
+++ b/usr.bin/make/parse.c      Tue Dec 22 08:51:30 2020 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: parse.c,v 1.513 2020/12/22 08:31:13 rillig Exp $       */
+/*     $NetBSD: parse.c,v 1.514 2020/12/22 08:51:30 rillig Exp $       */
 
 /*
  * Copyright (c) 1988, 1989, 1990, 1993
@@ -117,7 +117,7 @@
 #include "pathnames.h"
 
 /*     "@(#)parse.c    8.3 (Berkeley) 3/19/94" */
-MAKE_RCSID("$NetBSD: parse.c,v 1.513 2020/12/22 08:31:13 rillig Exp $");
+MAKE_RCSID("$NetBSD: parse.c,v 1.514 2020/12/22 08:51:30 rillig Exp $");
 
 /* types and constants */
 
@@ -2840,7 +2840,7 @@
                }
 
                /* We now have a line of data */
-               /* TODO: Remove line_end, it's not necessary here. */
+               assert(ch_isspace(*line_end));
                *line_end = '\0';
 
                if (mode == GLM_FOR_BODY)
diff -r b59b9c813dd5 -r 242220cf802e usr.bin/make/unit-tests/opt-file.exp
--- a/usr.bin/make/unit-tests/opt-file.exp      Tue Dec 22 08:31:13 2020 +0000
+++ b/usr.bin/make/unit-tests/opt-file.exp      Tue Dec 22 08:51:30 2020 +0000
@@ -1,5 +1,6 @@
 value
 value
+line-with-trailing-whitespace
 make: "(stdin)" line 1: Zero byte read from file
 make: Fatal errors encountered -- cannot continue
 make: stopped in unit-tests
diff -r b59b9c813dd5 -r 242220cf802e usr.bin/make/unit-tests/opt-file.mk
--- a/usr.bin/make/unit-tests/opt-file.mk       Tue Dec 22 08:31:13 2020 +0000
+++ b/usr.bin/make/unit-tests/opt-file.mk       Tue Dec 22 08:51:30 2020 +0000
@@ -1,4 +1,4 @@
-# $NetBSD: opt-file.mk,v 1.9 2020/12/22 08:23:12 rillig Exp $
+# $NetBSD: opt-file.mk,v 1.10 2020/12/22 08:51:30 rillig Exp $
 #
 # Tests for the -f command line option.
 
@@ -7,6 +7,7 @@
 all: .PHONY
 all: file-ending-in-backslash
 all: file-ending-in-backslash-mmap
+all: line-with-trailing-whitespace
 all: file-containing-null-byte
 
 # Passing '-' as the filename reads from stdin.  This is unusual but possible.
@@ -45,6 +46,14 @@
        @${MAKE} -r -f opt-file-backslash -V VAR
        @rm opt-file-backslash
 
+# Since parse.c 1.511 from 2020-12-22, an assertion in ParseGetLine failed
+# for lines that contained trailing whitespace.  Worked around in parse.c
+# 1.513, properly fixed in parse.c 1.514.
+line-with-trailing-whitespace: .PHONY
+       @printf '%s' 'VAR=$@ ' > opt-file-trailing-whitespace
+       @${MAKE} -r -f opt-file-trailing-whitespace -V VAR
+       @rm opt-file-trailing-whitespace
+
 # If a file contains null bytes, the rest of the line is skipped, and parsing
 # continues in the next line.  Throughout the history of make, the behavior
 # has changed several times, sometimes knowingly, sometimes by accident.



Home | Main Index | Thread Index | Old Index