aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorKarl Heuer1996-01-24 23:41:04 +0000
committerKarl Heuer1996-01-24 23:41:04 +0000
commit9e7c370a5b574d55b5f9996fed99b1494818ea2a (patch)
treed9932faada49b6175f93f6f5f87a58eb4c510216 /src
parenta90ba1e21696f9fa1ff7d6f8e166eeb5c488afba (diff)
downloademacs-9e7c370a5b574d55b5f9996fed99b1494818ea2a.tar.gz
emacs-9e7c370a5b574d55b5f9996fed99b1494818ea2a.zip
* 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.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/macros.c b/src/macros.c
index 67c8ede6d4a..e63ea2be2e2 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\
51 { 51 {
52 current_kboard->kbd_macro_bufsize = 30; 52 current_kboard->kbd_macro_bufsize = 30;
53 current_kboard->kbd_macro_buffer 53 current_kboard->kbd_macro_buffer
54 = (Lisp_Object *)malloc (30 * sizeof (Lisp_Object)); 54 = (Lisp_Object *)xmalloc (30 * sizeof (Lisp_Object));
55 } 55 }
56 update_mode_lines++; 56 update_mode_lines++;
57 if (NILP (append)) 57 if (NILP (append))
58 { 58 {
59 if (current_kboard->kbd_macro_bufsize > 200)
60 {
61 current_kboard->kbd_macro_bufsize = 30;
62 current_kboard->kbd_macro_buffer
63 = (Lisp_Object *)xrealloc (30 * sizeof (Lisp_Object));
64 }
59 current_kboard->kbd_macro_ptr = current_kboard->kbd_macro_buffer; 65 current_kboard->kbd_macro_ptr = current_kboard->kbd_macro_buffer;
60 current_kboard->kbd_macro_end = current_kboard->kbd_macro_buffer; 66 current_kboard->kbd_macro_end = current_kboard->kbd_macro_buffer;
61 message("Defining kbd macro..."); 67 message ("Defining kbd macro...");
62 } 68 }
63 else 69 else
64 { 70 {
65 message("Appending to kbd macro..."); 71 message ("Appending to kbd macro...");
66 current_kboard->kbd_macro_ptr = current_kboard->kbd_macro_end; 72 current_kboard->kbd_macro_ptr = current_kboard->kbd_macro_end;
67 Fexecute_kbd_macro (current_kboard->Vlast_kbd_macro, 73 Fexecute_kbd_macro (current_kboard->Vlast_kbd_macro,
68 make_number (1)); 74 make_number (1));
@@ -101,7 +107,7 @@ An argument of zero means repeat until error.")
101 = make_event_array ((current_kboard->kbd_macro_end 107 = make_event_array ((current_kboard->kbd_macro_end
102 - current_kboard->kbd_macro_buffer), 108 - current_kboard->kbd_macro_buffer),
103 current_kboard->kbd_macro_buffer); 109 current_kboard->kbd_macro_buffer);
104 message("Keyboard macro defined"); 110 message ("Keyboard macro defined");
105 } 111 }
106 112
107 if (XFASTINT (repeat) == 0) 113 if (XFASTINT (repeat) == 0)