Mercurial > hg > xemacs-beta
annotate src/commands.h @ 5857:6ec4964c1687
Be more careful about echo_buf arithmetic, event-stream.c.
src/ChangeLog addition:
2015-03-12 Aidan Kehoe <kehoea@parhasard.net>
* event-stream.c (lookup_command_event):
Check whether echo_buf_fill_pointer is negative before using it in
arithmetic, avoiding a crash in GC.
Oddly the old code didn't do this check and didn't crash, but its
echo_buf was from malloced memory, not from our string data, so
there may have been more room to manoeuvre.
| author | Aidan Kehoe <kehoea@parhasard.net> |
|---|---|
| date | Thu, 12 Mar 2015 23:31:42 +0000 |
| parents | 308d34e9f07d |
| children |
| rev | line source |
|---|---|
| 428 | 1 /* Definitions needed by most editing commands. |
| 2 Copyright (C) 1985-1994 Free Software Foundation, Inc. | |
| 3 | |
| 4 This file is part of XEmacs. | |
| 5 | |
|
5402
308d34e9f07d
Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents:
2268
diff
changeset
|
6 XEmacs is free software: you can redistribute it and/or modify it |
| 428 | 7 under the terms of the GNU General Public License as published by the |
|
5402
308d34e9f07d
Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents:
2268
diff
changeset
|
8 Free Software Foundation, either version 3 of the License, or (at your |
|
308d34e9f07d
Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents:
2268
diff
changeset
|
9 option) any later version. |
| 428 | 10 |
| 11 XEmacs is distributed in the hope that it will be useful, but WITHOUT | |
| 12 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
| 13 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
| 14 for more details. | |
| 15 | |
| 16 You should have received a copy of the GNU General Public License | |
|
5402
308d34e9f07d
Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents:
2268
diff
changeset
|
17 along with XEmacs. If not, see <http://www.gnu.org/licenses/>. */ |
| 428 | 18 |
| 19 /* Synched up with: FSF 19.30. */ | |
| 20 | |
| 440 | 21 #ifndef INCLUDED_commands_h_ |
| 22 #define INCLUDED_commands_h_ | |
| 428 | 23 |
| 24 #if 0 /* FSFmacs */ | |
| 25 #define Ctl(c) ((c)&037) | |
| 26 #endif | |
| 27 | |
| 28 /* bunches of FSF keymap and minibuffer stuff not here (in Lisp) */ | |
| 29 | |
| 30 extern Lisp_Object Vlast_command_event; | |
| 31 | |
| 32 extern Lisp_Object Vlast_input_event; | |
| 33 | |
| 34 /* These next two for compatibility; they are V... because they can be | |
| 35 nil. (Many FSFmacs equivalent variables incorrectly omit the V | |
| 36 even though they are Lisp_Objects.) */ | |
| 37 /* Last character of last key sequence. */ | |
| 38 extern Lisp_Object Vlast_command_char; | |
| 39 | |
| 40 extern Lisp_Object Vlast_input_char; | |
| 41 | |
| 42 #if 0 /* FSFmacs */ | |
| 43 /* Last input character read as a command, not counting menus | |
| 44 reached by the mouse. */ | |
| 45 extern Lisp_Object Vlast_nonmenu_event; | |
| 46 #endif | |
| 47 | |
| 48 #if 0 /* Local to event-stream.c */ | |
| 49 /* List of command events to be re-read, or Qnil. */ | |
| 50 extern Lisp_Object Vunread_command_events; | |
| 51 #endif | |
| 52 | |
| 53 #if 0 /* FSFmacs */ | |
| 54 /* Command char event to be re-read, or -1 if none. | |
| 55 Setting this is obsolete, but some things should still check it. */ | |
| 56 extern int unread_command_char; | |
| 57 #endif | |
| 58 | |
| 59 /* Last command executed by the editor command loop, not counting | |
| 60 commands that set the prefix argument. */ | |
| 61 | |
| 62 extern Lisp_Object Vlast_command; | |
| 63 | |
| 64 /* The command being executed by the command loop. | |
| 65 Commands may set this, and the value set will be copied into | |
| 66 Vlast_command instead of the actual command. */ | |
| 67 extern Lisp_Object Vthis_command; | |
| 68 | |
| 69 #if 0 /* FSFmacs */ | |
| 70 /* If not Qnil, this is a switch-frame event which we decided to put | |
| 71 off until the end of a key sequence. This should be read as the | |
| 72 next command input, after any Vunread_command_events. | |
| 73 | |
| 74 read_key_sequence uses this to delay switch-frame events until the | |
| 75 end of the key sequence; Fread_char uses it to put off switch-frame | |
| 76 events until a non-ASCII event is acceptable as input. */ | |
| 77 extern Lisp_Object unread_switch_frame; | |
| 78 #endif | |
| 79 | |
| 80 #if 0 /* Local to event-stream.c */ | |
| 81 /* The value of point when the last command was executed. */ | |
| 82 extern int last_point_position; | |
| 83 | |
| 84 /* The buffer that was current when the last command was started. */ | |
| 85 extern Lisp_Object last_point_position_buffer; | |
| 86 #endif | |
| 87 | |
| 88 /* This is so incredibly losing that it's been completely eliminated | |
| 89 from the code. Trust me, there are cleaner, safer ways of | |
| 90 achieving the same functionality (e.g. use select()). */ | |
| 91 /* extern int immediate_quit; Nonzero means ^G can quit instantly */ | |
| 92 | |
| 93 /* Nonzero if input is coming from the keyboard */ | |
| 94 | |
| 95 #define INTERACTIVE (NILP (Vexecuting_macro) && !noninteractive) | |
| 96 | |
| 97 /* Set this nonzero to force reconsideration of modeline. */ | |
| 98 | |
| 99 extern int modeline_changed; | |
| 100 | |
| 101 extern Lisp_Object recent_keys_ring; | |
| 102 extern int recent_keys_ring_index; | |
| 103 | |
| 104 /* #ifndef LISP_COMMAND_LOOP */ | |
| 105 extern Lisp_Object Vtop_level; | |
| 106 /* #else */ | |
| 107 extern Lisp_Object Vcommand_loop; | |
| 108 /* #endif */ | |
| 109 DECLARE_DOESNT_RETURN (initial_command_loop (Lisp_Object)); | |
| 2268 | 110 DECLARE_DOESNT_RETURN_TYPE (Lisp_Object, |
| 111 call_command_loop (Lisp_Object catch_errors)); | |
| 458 | 112 extern Fixnum command_loop_level; |
| 428 | 113 |
| 114 extern Lisp_Object Vkeyboard_translate_table; | |
| 115 extern Lisp_Object Vlast_input_time; | |
| 116 extern Lisp_Object Vcurrent_mouse_event; | |
| 117 | |
| 118 extern int zmacs_regions; | |
| 119 extern int zmacs_region_active_p; | |
| 120 extern int zmacs_region_stays; | |
| 121 void zmacs_update_region (void); | |
| 122 void zmacs_deactivate_region (void); | |
| 123 Lisp_Object zmacs_region_buffer (void); | |
| 124 | |
| 125 extern Lisp_Object Vthis_command_keys; /* event-stream.c */ | |
| 126 | |
| 440 | 127 #endif /* INCLUDED_commands_h_ */ |
