Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/usr.bin/make Avoid calling brk_string() and hence Var_Export...
details: https://anonhg.NetBSD.org/src/rev/fc272afaaeaa
branches: trunk
changeset: 341964:fc272afaaeaa
user: sjg <sjg%NetBSD.org@localhost>
date: Tue Dec 01 07:26:08 2015 +0000
description:
Avoid calling brk_string() and hence Var_Export1() on
empty strings.
diffstat:
usr.bin/make/var.c | 70 ++++++++++++++++++++++++++++-------------------------
1 files changed, 37 insertions(+), 33 deletions(-)
diffs (110 lines):
diff -r 70b16f9c3e92 -r fc272afaaeaa usr.bin/make/var.c
--- a/usr.bin/make/var.c Tue Dec 01 02:21:17 2015 +0000
+++ b/usr.bin/make/var.c Tue Dec 01 07:26:08 2015 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: var.c,v 1.199 2015/10/20 21:30:57 sjg Exp $ */
+/* $NetBSD: var.c,v 1.200 2015/12/01 07:26:08 sjg Exp $ */
/*
* Copyright (c) 1988, 1989, 1990, 1993
@@ -69,14 +69,14 @@
*/
#ifndef MAKE_NATIVE
-static char rcsid[] = "$NetBSD: var.c,v 1.199 2015/10/20 21:30:57 sjg Exp $";
+static char rcsid[] = "$NetBSD: var.c,v 1.200 2015/12/01 07:26:08 sjg Exp $";
#else
#include <sys/cdefs.h>
#ifndef lint
#if 0
static char sccsid[] = "@(#)var.c 8.3 (Berkeley) 3/19/94";
#else
-__RCSID("$NetBSD: var.c,v 1.199 2015/10/20 21:30:57 sjg Exp $");
+__RCSID("$NetBSD: var.c,v 1.200 2015/12/01 07:26:08 sjg Exp $");
#endif
#endif /* not lint */
#endif
@@ -702,13 +702,15 @@
int i;
val = Var_Subst(NULL, tmp, VAR_GLOBAL, FALSE, TRUE);
- av = brk_string(val, &ac, FALSE, &as);
- for (i = 0; i < ac; i++) {
- Var_Export1(av[i], 0);
+ if (*val) {
+ av = brk_string(val, &ac, FALSE, &as);
+ for (i = 0; i < ac; i++) {
+ Var_Export1(av[i], 0);
+ }
+ free(as);
+ free(av);
}
free(val);
- free(as);
- free(av);
}
}
@@ -740,35 +742,37 @@
track = VAR_EXPORT_PARENT;
}
val = Var_Subst(NULL, str, VAR_GLOBAL, FALSE, TRUE);
- av = brk_string(val, &ac, FALSE, &as);
- for (i = 0; i < ac; i++) {
- name = av[i];
- if (!name[1]) {
- /*
- * A single char.
- * If it is one of the vars that should only appear in
- * local context, skip it, else we can get Var_Subst
- * into a loop.
- */
- switch (name[0]) {
- case '@':
- case '%':
- case '*':
- case '!':
- continue;
+ if (*val) {
+ av = brk_string(val, &ac, FALSE, &as);
+ for (i = 0; i < ac; i++) {
+ name = av[i];
+ if (!name[1]) {
+ /*
+ * A single char.
+ * If it is one of the vars that should only appear in
+ * local context, skip it, else we can get Var_Subst
+ * into a loop.
+ */
+ switch (name[0]) {
+ case '@':
+ case '%':
+ case '*':
+ case '!':
+ continue;
+ }
+ }
+ if (Var_Export1(name, track)) {
+ if (VAR_EXPORTED_ALL != var_exportedVars)
+ var_exportedVars = VAR_EXPORTED_YES;
+ if (isExport && track) {
+ Var_Append(MAKE_EXPORTED, name, VAR_GLOBAL);
+ }
}
}
- if (Var_Export1(name, track)) {
- if (VAR_EXPORTED_ALL != var_exportedVars)
- var_exportedVars = VAR_EXPORTED_YES;
- if (isExport && track) {
- Var_Append(MAKE_EXPORTED, name, VAR_GLOBAL);
- }
- }
+ free(as);
+ free(av);
}
free(val);
- free(as);
- free(av);
}
Home |
Main Index |
Thread Index |
Old Index