diff options
| author | Gerd Moellmann | 2000-12-08 09:58:28 +0000 |
|---|---|---|
| committer | Gerd Moellmann | 2000-12-08 09:58:28 +0000 |
| commit | ee89188f2926b9e651d488dea8841cccc571a1fe (patch) | |
| tree | f74d13f9b840ab1fd86c744f36cbe4d0b6fec89e /src/keymap.c | |
| parent | 49484b283f663916883a4fcc4b33d4453f0403e4 (diff) | |
| download | emacs-ee89188f2926b9e651d488dea8841cccc571a1fe.tar.gz emacs-ee89188f2926b9e651d488dea8841cccc571a1fe.zip | |
(current_minor_maps): Use malloc. Prevent a leak.
Diffstat (limited to 'src/keymap.c')
| -rw-r--r-- | src/keymap.c | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/src/keymap.c b/src/keymap.c index c24bb66b625..f2152d17202 100644 --- a/src/keymap.c +++ b/src/keymap.c | |||
| @@ -1162,16 +1162,18 @@ current_minor_maps (modeptr, mapptr) | |||
| 1162 | { | 1162 | { |
| 1163 | Lisp_Object *newmodes, *newmaps; | 1163 | Lisp_Object *newmodes, *newmaps; |
| 1164 | 1164 | ||
| 1165 | /* Use malloc/realloc here. See the comment above | ||
| 1166 | this function. */ | ||
| 1165 | if (cmm_maps) | 1167 | if (cmm_maps) |
| 1166 | { | 1168 | { |
| 1167 | BLOCK_INPUT; | 1169 | BLOCK_INPUT; |
| 1168 | cmm_size *= 2; | 1170 | cmm_size *= 2; |
| 1169 | newmodes | 1171 | newmodes |
| 1170 | = (Lisp_Object *) realloc (cmm_modes, | 1172 | = (Lisp_Object *) realloc (cmm_modes, |
| 1171 | cmm_size * sizeof (Lisp_Object)); | 1173 | cmm_size * sizeof *newmodes); |
| 1172 | newmaps | 1174 | newmaps |
| 1173 | = (Lisp_Object *) realloc (cmm_maps, | 1175 | = (Lisp_Object *) realloc (cmm_maps, |
| 1174 | cmm_size * sizeof (Lisp_Object)); | 1176 | cmm_size * sizeof *newmaps); |
| 1175 | UNBLOCK_INPUT; | 1177 | UNBLOCK_INPUT; |
| 1176 | } | 1178 | } |
| 1177 | else | 1179 | else |
| @@ -1179,18 +1181,18 @@ current_minor_maps (modeptr, mapptr) | |||
| 1179 | BLOCK_INPUT; | 1181 | BLOCK_INPUT; |
| 1180 | cmm_size = 30; | 1182 | cmm_size = 30; |
| 1181 | newmodes | 1183 | newmodes |
| 1182 | = (Lisp_Object *) xmalloc (cmm_size * sizeof (Lisp_Object)); | 1184 | = (Lisp_Object *) malloc (cmm_size * sizeof *newmodes); |
| 1183 | newmaps | 1185 | newmaps |
| 1184 | = (Lisp_Object *) xmalloc (cmm_size * sizeof (Lisp_Object)); | 1186 | = (Lisp_Object *) malloc (cmm_size * sizeof *newmaps); |
| 1185 | UNBLOCK_INPUT; | 1187 | UNBLOCK_INPUT; |
| 1186 | } | 1188 | } |
| 1187 | 1189 | ||
| 1188 | if (newmaps && newmodes) | 1190 | if (newmodes) |
| 1189 | { | 1191 | cmm_modes = newmodes; |
| 1190 | cmm_modes = newmodes; | 1192 | if (newmaps) |
| 1191 | cmm_maps = newmaps; | 1193 | cmm_maps = newmaps; |
| 1192 | } | 1194 | |
| 1193 | else | 1195 | if (newmodes == NULL || newmaps == NULL) |
| 1194 | break; | 1196 | break; |
| 1195 | } | 1197 | } |
| 1196 | 1198 | ||