summaryrefslogtreecommitdiff
path: root/devel/cqual/patches/patch-bm
blob: 5130f3ed5124cb9a40449188cccd93fe77b9dbc2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
$NetBSD: patch-bm,v 1.1 2006/01/18 23:24:12 rillig Exp $

Don't use alloca. (Solaris would require <alloca.h> to be included for
it.)

--- src/utils.c.orig	2003-09-10 20:52:09.000000000 +0200
+++ src/utils.c	2006-01-16 14:44:06.890343700 +0100
@@ -19,6 +19,7 @@ Boston, MA 02111-1307, USA. */
 #include <ctype.h>
 #include <signal.h>
 #include <stdio.h>
+#include <stdlib.h>
 #include <stdarg.h>
 #include <string.h>
 #include <unistd.h>
@@ -328,16 +329,23 @@ const char *name_with_loc(region r, cons
   char *index;
   int base_len;
   char *base_name;
+  char *result;
 
   if ((index = strstr(name, "@")))
     base_len = index - name;
   else
     base_len = strlen(name);
-  base_name = alloca((base_len + 2) * sizeof(char));
+  base_name = malloc((base_len + 2) * sizeof(char));
+  if (base_name == NULL) {
+    perror("cqual: in name_with_loc");
+    exit(EXIT_FAILURE);
+  }
   strncpy(base_name, name, base_len);
   base_name[base_len] = '@';
   base_name[base_len+1] = '\0';
-  return rstrcat(r, base_name, inttostr(r, loc->lineno));
+  result = rstrcat(r, base_name, inttostr(r, loc->lineno));
+  free(base_name);
+  return result;
 }
 
 /* A function to let you pass a function pointer which prints to