Module Name: src Committed By: rillig Date: Sat Nov 21 18:06:09 UTC 2020
Modified Files: src/usr.bin/make: suff.c Log Message: make(1): document necessary condition in SuffUpdateTarget To generate a diff of this commit: cvs rdiff -u -r1.262 -r1.263 src/usr.bin/make/suff.c 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/suff.c diff -u src/usr.bin/make/suff.c:1.262 src/usr.bin/make/suff.c:1.263 --- src/usr.bin/make/suff.c:1.262 Sat Nov 21 17:18:36 2020 +++ src/usr.bin/make/suff.c Sat Nov 21 18:06:09 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: suff.c,v 1.262 2020/11/21 17:18:36 rillig Exp $ */ +/* $NetBSD: suff.c,v 1.263 2020/11/21 18:06:09 rillig Exp $ */ /* * Copyright (c) 1988, 1989, 1990, 1993 @@ -114,7 +114,7 @@ #include "dir.h" /* "@(#)suff.c 8.4 (Berkeley) 3/21/94" */ -MAKE_RCSID("$NetBSD: suff.c,v 1.262 2020/11/21 17:18:36 rillig Exp $"); +MAKE_RCSID("$NetBSD: suff.c,v 1.263 2020/11/21 18:06:09 rillig Exp $"); #define SUFF_DEBUG0(text) DEBUG0(SUFF, text) #define SUFF_DEBUG1(fmt, arg1) DEBUG1(SUFF, fmt, arg1) @@ -667,17 +667,23 @@ SuffUpdateTarget(GNode *target, GNode ** return FALSE; /* - * XXX: What is the purpose of the 'ptr == target->name' condition here? - * In suff-rebuild.mk in the line '.SUFFIXES: .c .b .a', it prevents the - * rule '.b.c' from being added again during Suff_AddSuffix(".b"). - */ - /* * XXX: What about a transformation ".cpp.c"? If ".c" is added as a new * suffix, it seems wrong that this transformation would be skipped just * because ".c" happens to be a prefix of ".cpp". */ - if ((ptr = strstr(target->name, suff->name)) == NULL || - ptr == target->name) + ptr = strstr(target->name, suff->name); + if (ptr == NULL) + return FALSE; + + /* + * XXX: In suff-rebuild.mk, in the line '.SUFFIXES: .c .b .a', this + * condition prevents the rule '.b.c' from being added again during + * Suff_AddSuffix(".b"). + * + * XXX: Removing this paragraph makes suff-add-later.mk use massive + * amounts of memory. + */ + if (ptr == target->name) return FALSE; if (SuffParseTransform(target->name, &srcSuff, &targSuff)) {