diff options
Diffstat (limited to 'src/casefiddle.c')
| -rw-r--r-- | src/casefiddle.c | 12 |
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 | ||
| 4 | This file is part of GNU Emacs. | 5 | This 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 | } |