diff options
author | sjg <sjg@FreeBSD.org> | 2014-07-08 22:27:50 +0000 |
---|---|---|
committer | sjg <sjg@FreeBSD.org> | 2014-07-08 22:27:50 +0000 |
commit | 8a8bdedf3516cfc13d63e3d424375679d4fe2a5c (patch) | |
tree | 4c5229352cca8f44795e8423807a3ec5d9f482ed /contrib/bmake/str.c | |
parent | 26d6f0488543168ab53e731b626612a7d1028552 (diff) | |
download | FreeBSD-src-8a8bdedf3516cfc13d63e3d424375679d4fe2a5c.zip FreeBSD-src-8a8bdedf3516cfc13d63e3d424375679d4fe2a5c.tar.gz |
Update to bmake-20140620
Main change is detection of malformed variable references.
Reviewed by: obrien
Diffstat (limited to 'contrib/bmake/str.c')
-rw-r--r-- | contrib/bmake/str.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/contrib/bmake/str.c b/contrib/bmake/str.c index bc324b8..0260447 100644 --- a/contrib/bmake/str.c +++ b/contrib/bmake/str.c @@ -1,4 +1,4 @@ -/* $NetBSD: str.c,v 1.34 2012/03/03 23:16:47 dholland Exp $ */ +/* $NetBSD: str.c,v 1.35 2014/02/12 01:35:56 sjg Exp $ */ /*- * Copyright (c) 1988, 1989, 1990, 1993 @@ -69,14 +69,14 @@ */ #ifndef MAKE_NATIVE -static char rcsid[] = "$NetBSD: str.c,v 1.34 2012/03/03 23:16:47 dholland Exp $"; +static char rcsid[] = "$NetBSD: str.c,v 1.35 2014/02/12 01:35:56 sjg Exp $"; #else #include <sys/cdefs.h> #ifndef lint #if 0 static char sccsid[] = "@(#)str.c 5.8 (Berkeley) 6/1/90"; #else -__RCSID("$NetBSD: str.c,v 1.34 2012/03/03 23:16:47 dholland Exp $"); +__RCSID("$NetBSD: str.c,v 1.35 2014/02/12 01:35:56 sjg Exp $"); #endif #endif /* not lint */ #endif @@ -145,7 +145,7 @@ brk_string(const char *str, int *store_argc, Boolean expand, char **buffer) const char *p; int len; int argmax = 50, curlen = 0; - char **argv = bmake_malloc((argmax + 1) * sizeof(char *)); + char **argv; /* skip leading space chars. */ for (; *str == ' ' || *str == '\t'; ++str) @@ -156,6 +156,12 @@ brk_string(const char *str, int *store_argc, Boolean expand, char **buffer) *buffer = bmake_malloc(curlen = len); /* + * initial argmax based on len + */ + argmax = MAX((len / 5), 50); + argv = bmake_malloc((argmax + 1) * sizeof(char *)); + + /* * copy the string; at the same time, parse backslashes, * quotes and build the argument list. */ |