Module Name: src
Committed By: rillig
Date: Sun Dec 12 08:36:21 UTC 2021
Modified Files:
src/usr.bin/make: cond.c
src/usr.bin/make/unit-tests: cond-func.exp
Log Message:
make: generate more specific error message on malformed conditional
To generate a diff of this commit:
cvs rdiff -u -r1.298 -r1.299 src/usr.bin/make/cond.c
cvs rdiff -u -r1.6 -r1.7 src/usr.bin/make/unit-tests/cond-func.exp
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/usr.bin/make/cond.c
diff -u src/usr.bin/make/cond.c:1.298 src/usr.bin/make/cond.c:1.299
--- src/usr.bin/make/cond.c:1.298 Sat Dec 11 11:13:30 2021
+++ src/usr.bin/make/cond.c Sun Dec 12 08:36:21 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: cond.c,v 1.298 2021/12/11 11:13:30 rillig Exp $ */
+/* $NetBSD: cond.c,v 1.299 2021/12/12 08:36:21 rillig Exp $ */
/*
* Copyright (c) 1988, 1989, 1990 The Regents of the University of California.
@@ -95,7 +95,7 @@
#include "dir.h"
/* "@(#)cond.c 8.2 (Berkeley) 1/2/94" */
-MAKE_RCSID("$NetBSD: cond.c,v 1.298 2021/12/11 11:13:30 rillig Exp $");
+MAKE_RCSID("$NetBSD: cond.c,v 1.299 2021/12/12 08:36:21 rillig Exp $");
/*
* The parsing of conditional expressions is based on this grammar:
@@ -230,11 +230,6 @@ ParseFuncArg(CondParser *par, const char
if (func != NULL)
p++; /* Skip opening '(' - verified by caller */
- if (*p == '\0') {
- *out_arg = NULL; /* Missing closing parenthesis: */
- return 0; /* .if defined( */
- }
-
cpp_skip_hspace(&p);
Buf_InitSize(&argBuf, 16);
@@ -778,8 +773,9 @@ CondParser_FuncCall(CondParser *par, boo
arglen = ParseFuncArg(par, &cp, doEval, fn->fn_name, &arg);
if (arglen == 0) {
- par->p = cp;
*out_token = TOK_FALSE;
+ free(arg);
+ par->p = cp;
return true;
}
Index: src/usr.bin/make/unit-tests/cond-func.exp
diff -u src/usr.bin/make/unit-tests/cond-func.exp:1.6 src/usr.bin/make/unit-tests/cond-func.exp:1.7
--- src/usr.bin/make/unit-tests/cond-func.exp:1.6 Fri Jan 22 00:12:01 2021
+++ src/usr.bin/make/unit-tests/cond-func.exp Sun Dec 12 08:36:21 2021
@@ -6,7 +6,7 @@ make: "cond-func.mk" line 102: A plain f
make: "cond-func.mk" line 109: A plain function name is parsed as !empty(...).
make: "cond-func.mk" line 119: Symbols may start with a function name.
make: "cond-func.mk" line 124: Symbols may start with a function name.
-make: "cond-func.mk" line 130: Malformed conditional (defined()
+make: "cond-func.mk" line 130: Missing closing parenthesis for defined()
make: Fatal errors encountered -- cannot continue
make: stopped in unit-tests
exit status 1