# HG changeset patch # User Gerd Moellmann # Date 976269508 0 # Node ID 09d0a988515c7a28b300d15356da6692daac4870 # Parent aa3b69684dbf9aa6bd7956fcf280cce21b453b33 (current_minor_maps): Use malloc. Prevent a leak. diff -r aa3b69684dbf -r 09d0a988515c src/keymap.c --- a/src/keymap.c Fri Dec 08 09:58:04 2000 +0000 +++ b/src/keymap.c Fri Dec 08 09:58:28 2000 +0000 @@ -1162,16 +1162,18 @@ { Lisp_Object *newmodes, *newmaps; + /* Use malloc/realloc here. See the comment above + this function. */ if (cmm_maps) { BLOCK_INPUT; cmm_size *= 2; newmodes = (Lisp_Object *) realloc (cmm_modes, - cmm_size * sizeof (Lisp_Object)); + cmm_size * sizeof *newmodes); newmaps = (Lisp_Object *) realloc (cmm_maps, - cmm_size * sizeof (Lisp_Object)); + cmm_size * sizeof *newmaps); UNBLOCK_INPUT; } else @@ -1179,18 +1181,18 @@ BLOCK_INPUT; cmm_size = 30; newmodes - = (Lisp_Object *) xmalloc (cmm_size * sizeof (Lisp_Object)); + = (Lisp_Object *) malloc (cmm_size * sizeof *newmodes); newmaps - = (Lisp_Object *) xmalloc (cmm_size * sizeof (Lisp_Object)); + = (Lisp_Object *) malloc (cmm_size * sizeof *newmaps); UNBLOCK_INPUT; } - if (newmaps && newmodes) - { - cmm_modes = newmodes; - cmm_maps = newmaps; - } - else + if (newmodes) + cmm_modes = newmodes; + if (newmaps) + cmm_maps = newmaps; + + if (newmodes == NULL || newmaps == NULL) break; }