aboutsummaryrefslogtreecommitdiffstats
path: root/src/casefiddle.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/casefiddle.c')
-rw-r--r--src/casefiddle.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/src/casefiddle.c b/src/casefiddle.c
index 6387c4bc845..25a5a3d12b8 100644
--- a/src/casefiddle.c
+++ b/src/casefiddle.c
@@ -1,5 +1,6 @@
1/* GNU Emacs case conversion functions. 1/* GNU Emacs case conversion functions.
2 Copyright (C) 1985, 1994, 1997 Free Software Foundation, Inc. 2 Copyright (C) 1985,94,97,98,99, 2001, 2002, 2004
3 Free Software Foundation, Inc.
3 4
4This file is part of GNU Emacs. 5This file is part of GNU Emacs.
5 6
@@ -109,8 +110,12 @@ casify_object (flag, obj)
109 /* The work is not yet finished because of a multibyte 110 /* The work is not yet finished because of a multibyte
110 character just encountered. */ 111 character just encountered. */
111 int fromlen, j_byte = i; 112 int fromlen, j_byte = i;
112 char *buf 113 char *buf;
113 = (char *) alloca ((len - i) * MAX_MULTIBYTE_LENGTH + i); 114 int bufsize;
115 USE_SAFE_ALLOCA;
116
117 bufsize = (len - i) * MAX_MULTIBYTE_LENGTH + i;
118 SAFE_ALLOCA (buf, char *, bufsize);
114 119
115 /* Copy data already handled. */ 120 /* Copy data already handled. */
116 bcopy (SDATA (obj), buf, i); 121 bcopy (SDATA (obj), buf, i);
@@ -132,6 +137,7 @@ casify_object (flag, obj)
132 } 137 }
133 obj = make_multibyte_string (buf, SCHARS (obj), 138 obj = make_multibyte_string (buf, SCHARS (obj),
134 j_byte); 139 j_byte);
140 SAFE_FREE (bufsize);
135 } 141 }
136 return obj; 142 return obj;
137 } 143 }