diff options
author | Karl Heuer <[email protected]> | 1996-01-24 23:41:04 +0000 |
---|---|---|
committer | Karl Heuer <[email protected]> | 1996-01-24 23:41:04 +0000 |
commit | 9e7c370a5b574d55b5f9996fed99b1494818ea2a (patch) | |
tree | d9932faada49b6175f93f6f5f87a58eb4c510216 /src | |
parent | a90ba1e21696f9fa1ff7d6f8e166eeb5c488afba (diff) |
* macros.c (Fstart_kbd_macro): Use xmalloc.
Shrink the kbd macro buffer if it is very big.
Diffstat (limited to 'src')
-rw-r--r-- | src/macros.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/src/macros.c b/src/macros.c index 67c8ede6d4..e63ea2be2e 100644 --- a/src/macros.c +++ b/src/macros.c @@ -51,18 +51,24 @@ Non-nil arg (prefix arg) means append to last macro defined;\n\ { current_kboard->kbd_macro_bufsize = 30; current_kboard->kbd_macro_buffer - = (Lisp_Object *)malloc (30 * sizeof (Lisp_Object)); + = (Lisp_Object *)xmalloc (30 * sizeof (Lisp_Object)); } update_mode_lines++; if (NILP (append)) { + if (current_kboard->kbd_macro_bufsize > 200) + { + current_kboard->kbd_macro_bufsize = 30; + current_kboard->kbd_macro_buffer + = (Lisp_Object *)xrealloc (30 * sizeof (Lisp_Object)); + } current_kboard->kbd_macro_ptr = current_kboard->kbd_macro_buffer; current_kboard->kbd_macro_end = current_kboard->kbd_macro_buffer; - message("Defining kbd macro..."); + message ("Defining kbd macro..."); } else { - message("Appending to kbd macro..."); + message ("Appending to kbd macro..."); current_kboard->kbd_macro_ptr = current_kboard->kbd_macro_end; Fexecute_kbd_macro (current_kboard->Vlast_kbd_macro, make_number (1)); @@ -101,7 +107,7 @@ An argument of zero means repeat until error.") = make_event_array ((current_kboard->kbd_macro_end - current_kboard->kbd_macro_buffer), current_kboard->kbd_macro_buffer); - message("Keyboard macro defined"); + message ("Keyboard macro defined"); } if (XFASTINT (repeat) == 0) |