aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorPaul Eggert2011-03-27 10:14:11 -0700
committerPaul Eggert2011-03-27 10:14:11 -0700
commitba0165e1f14c55aaba73de35d75a9acea721c825 (patch)
tree17c8d4033c0b374cdf779f85c7f94ea72e90f09b /src
parent3c59b4c9d671ec0298a8489eabbd09af47039852 (diff)
downloademacs-ba0165e1f14c55aaba73de35d75a9acea721c825.tar.gz
emacs-ba0165e1f14c55aaba73de35d75a9acea721c825.zip
* keyboard.c (parse_modifiers_uncached, parse_modifiers):
Don't assume string length fits in int.
Diffstat (limited to 'src')
-rw-r--r--src/ChangeLog3
-rw-r--r--src/keyboard.c8
2 files changed, 7 insertions, 4 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index 6cb8ad8000d..bfee23b16d0 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,5 +1,8 @@
12011-03-27 Paul Eggert <eggert@cs.ucla.edu> 12011-03-27 Paul Eggert <eggert@cs.ucla.edu>
2 2
3 * keyboard.c (parse_modifiers_uncached, parse_modifiers):
4 Don't assume string length fits in int.
5
3 * callproc.c (Fcall_process, Fcall_process_region): Use SAFE_ALLOCA 6 * callproc.c (Fcall_process, Fcall_process_region): Use SAFE_ALLOCA
4 instead of alloca (Bug#8344). 7 instead of alloca (Bug#8344).
5 8
diff --git a/src/keyboard.c b/src/keyboard.c
index 28d65766664..e29c7e9bc5c 100644
--- a/src/keyboard.c
+++ b/src/keyboard.c
@@ -5959,10 +5959,10 @@ make_lispy_switch_frame (Lisp_Object frame)
5959 This doesn't use any caches. */ 5959 This doesn't use any caches. */
5960 5960
5961static int 5961static int
5962parse_modifiers_uncached (Lisp_Object symbol, int *modifier_end) 5962parse_modifiers_uncached (Lisp_Object symbol, EMACS_INT *modifier_end)
5963{ 5963{
5964 Lisp_Object name; 5964 Lisp_Object name;
5965 int i; 5965 EMACS_INT i;
5966 int modifiers; 5966 int modifiers;
5967 5967
5968 CHECK_SYMBOL (symbol); 5968 CHECK_SYMBOL (symbol);
@@ -5972,7 +5972,7 @@ parse_modifiers_uncached (Lisp_Object symbol, int *modifier_end)
5972 5972
5973 for (i = 0; i+2 <= SBYTES (name); ) 5973 for (i = 0; i+2 <= SBYTES (name); )
5974 { 5974 {
5975 int this_mod_end = 0; 5975 EMACS_INT this_mod_end = 0;
5976 int this_mod = 0; 5976 int this_mod = 0;
5977 5977
5978 /* See if the name continues with a modifier word. 5978 /* See if the name continues with a modifier word.
@@ -6169,7 +6169,7 @@ parse_modifiers (Lisp_Object symbol)
6169 return elements; 6169 return elements;
6170 else 6170 else
6171 { 6171 {
6172 int end; 6172 EMACS_INT end;
6173 int modifiers = parse_modifiers_uncached (symbol, &end); 6173 int modifiers = parse_modifiers_uncached (symbol, &end);
6174 Lisp_Object unmodified; 6174 Lisp_Object unmodified;
6175 Lisp_Object mask; 6175 Lisp_Object mask;