diff options
Diffstat (limited to 'main/make/make-3.82-copy-on-expand.patch')
-rw-r--r-- | main/make/make-3.82-copy-on-expand.patch | 58 |
1 files changed, 0 insertions, 58 deletions
diff --git a/main/make/make-3.82-copy-on-expand.patch b/main/make/make-3.82-copy-on-expand.patch deleted file mode 100644 index bcefa763be..0000000000 --- a/main/make/make-3.82-copy-on-expand.patch +++ /dev/null @@ -1,58 +0,0 @@ -fix from upstream cvs - ----------------------------- -revision 1.58 -date: 2011-08-29 12:20:19 -0400; author: psmith; state: Exp; lines: +7 -13; commitid: MdH0jSxpuIy7mqxv; -Save strings we're expanding in case an embedded eval causes them -to be freed (if they're the value of a variable that's reset for example). -See Savannah patch #7534 - -Index: expand.c -=================================================================== -RCS file: /sources/make/make/expand.c,v -retrieving revision 1.57 -retrieving revision 1.58 -diff -u -p -r1.57 -r1.58 ---- ./expand.c 7 May 2011 20:03:49 -0000 1.57 -+++ ./expand.c 29 Aug 2011 16:20:19 -0000 1.58 -@@ -197,7 +197,7 @@ variable_expand_string (char *line, cons - { - struct variable *v; - const char *p, *p1; -- char *abuf = NULL; -+ char *save; - char *o; - unsigned int line_offset; - -@@ -212,16 +212,11 @@ variable_expand_string (char *line, cons - return (variable_buffer); - } - -- /* If we want a subset of the string, allocate a temporary buffer for it. -- Most of the functions we use here don't work with length limits. */ -- if (length > 0 && string[length] != '\0') -- { -- abuf = xmalloc(length+1); -- memcpy(abuf, string, length); -- abuf[length] = '\0'; -- string = abuf; -- } -- p = string; -+ /* We need a copy of STRING: due to eval, it's possible that it will get -+ freed as we process it (it might be the value of a variable that's reset -+ for example). Also having a nil-terminated string is handy. */ -+ save = length < 0 ? xstrdup (string) : xstrndup (string, length); -+ p = save; - - while (1) - { -@@ -411,8 +406,7 @@ variable_expand_string (char *line, cons - ++p; - } - -- if (abuf) -- free (abuf); -+ free (save); - - variable_buffer_output (o, "", 1); - return (variable_buffer + line_offset); |