summary refs log tree commit diff
path: root/pkgs/development/tools/build-managers/gnumake/3.82/memory-corruption.patch
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/tools/build-managers/gnumake/3.82/memory-corruption.patch')
-rw-r--r--pkgs/development/tools/build-managers/gnumake/3.82/memory-corruption.patch37
1 files changed, 37 insertions, 0 deletions
diff --git a/pkgs/development/tools/build-managers/gnumake/3.82/memory-corruption.patch b/pkgs/development/tools/build-managers/gnumake/3.82/memory-corruption.patch
new file mode 100644
index 00000000000..b28c07353ec
--- /dev/null
+++ b/pkgs/development/tools/build-managers/gnumake/3.82/memory-corruption.patch
@@ -0,0 +1,37 @@
+--- function.c	2011/04/18 01:25:20	1.121
++++ function.c	2011/05/02 12:35:01	1.122
+@@ -706,7 +706,7 @@
+   const char *word_iterator = argv[0];
+   char buf[20];
+ 
+-  while (find_next_token (&word_iterator, (unsigned int *) 0) != 0)
++  while (find_next_token (&word_iterator, NULL) != 0)
+     ++i;
+ 
+   sprintf (buf, "%d", i);
+@@ -1133,21 +1133,14 @@
+ 
+   /* Find the maximum number of words we'll have.  */
+   t = argv[0];
+-  wordi = 1;
+-  while (*t != '\0')
++  wordi = 0;
++  while ((p = find_next_token (&t, NULL)) != 0)
+     {
+-      char c = *(t++);
+-
+-      if (! isspace ((unsigned char)c))
+-        continue;
+-
++      ++t;
+       ++wordi;
+-
+-      while (isspace ((unsigned char)*t))
+-        ++t;
+     }
+ 
+-  words = xmalloc (wordi * sizeof (char *));
++  words = xmalloc ((wordi == 0 ? 1 : wordi) * sizeof (char *));
+ 
+   /* Now assign pointers to each string in the array.  */
+   t = argv[0];