diff options
| author | Karl Heuer | 1996-01-24 23:41:04 +0000 |
|---|---|---|
| committer | Karl Heuer | 1996-01-24 23:41:04 +0000 |
| commit | 9e7c370a5b574d55b5f9996fed99b1494818ea2a (patch) | |
| tree | d9932faada49b6175f93f6f5f87a58eb4c510216 /src | |
| parent | a90ba1e21696f9fa1ff7d6f8e166eeb5c488afba (diff) | |
| download | emacs-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.c | 14 |
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) |