summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Eggert <eggert@cs.ucla.edu>2011-03-27 10:14:11 -0700
committerPaul Eggert <eggert@cs.ucla.edu>2011-03-27 10:14:11 -0700
commitba0165e1f14c55aaba73de35d75a9acea721c825 (patch)
tree17c8d4033c0b374cdf779f85c7f94ea72e90f09b
parent3c59b4c9d671ec0298a8489eabbd09af47039852 (diff)
downloademacs-ba0165e1f14c55aaba73de35d75a9acea721c825.tar.gz
emacs-ba0165e1f14c55aaba73de35d75a9acea721c825.tar.bz2
emacs-ba0165e1f14c55aaba73de35d75a9acea721c825.zip
* keyboard.c (parse_modifiers_uncached, parse_modifiers):
Don't assume string length fits in int.
-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 @@
2011-03-27 Paul Eggert <eggert@cs.ucla.edu>
+ * keyboard.c (parse_modifiers_uncached, parse_modifiers):
+ Don't assume string length fits in int.
+
* callproc.c (Fcall_process, Fcall_process_region): Use SAFE_ALLOCA
instead of alloca (Bug#8344).
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)
This doesn't use any caches. */
static int
-parse_modifiers_uncached (Lisp_Object symbol, int *modifier_end)
+parse_modifiers_uncached (Lisp_Object symbol, EMACS_INT *modifier_end)
{
Lisp_Object name;
- int i;
+ EMACS_INT i;
int modifiers;
CHECK_SYMBOL (symbol);
@@ -5972,7 +5972,7 @@ parse_modifiers_uncached (Lisp_Object symbol, int *modifier_end)
for (i = 0; i+2 <= SBYTES (name); )
{
- int this_mod_end = 0;
+ EMACS_INT this_mod_end = 0;
int this_mod = 0;
/* See if the name continues with a modifier word.
@@ -6169,7 +6169,7 @@ parse_modifiers (Lisp_Object symbol)
return elements;
else
{
- int end;
+ EMACS_INT end;
int modifiers = parse_modifiers_uncached (symbol, &end);
Lisp_Object unmodified;
Lisp_Object mask;