]> code.delx.au - gnu-emacs/commitdiff
* keymap.c (Fkey_binding): Check Lisp_Object types before doing
authorChong Yidong <cyd@stupidchicken.com>
Fri, 13 Oct 2006 01:45:37 +0000 (01:45 +0000)
committerChong Yidong <cyd@stupidchicken.com>
Fri, 13 Oct 2006 01:45:37 +0000 (01:45 +0000)
XCAR and XINT.

src/ChangeLog
src/keymap.c

index 495b55ce41f8ed9fe09ce9a50c5f7a89f06c65a3..30cae45ba84040e9000bcbc0073337b38db58ac7 100644 (file)
@@ -1,3 +1,8 @@
+2006-10-12  Chong Yidong  <cyd@stupidchicken.com>
+
+       * keymap.c (Fkey_binding): Check Lisp_Object types before doing
+       XCAR and XINT.
+
 2006-10-12  Romain Francoise  <romain@orebokech.com>
 
        * image.c (xbm_read_bitmap_data): Delete extra semicolon.
index 1476859ccd5ce345c014171dbf0262b50d9d4022..11e3e348da5b1b2834102c0eac1e32567dbd2a3a 100644 (file)
@@ -1610,13 +1610,12 @@ specified buffer position instead of point are used.
 
       /* We are not interested in locations without event data */
 
-      if (EVENT_HAS_PARAMETERS (event)) {
-       Lisp_Object kind;
-
-       kind = EVENT_HEAD_KIND (EVENT_HEAD (event));
-       if (EQ (kind, Qmouse_click))
-         position = EVENT_START (event);
-      }
+      if (EVENT_HAS_PARAMETERS (event))
+       {
+         Lisp_Object kind = EVENT_HEAD_KIND (EVENT_HEAD (event));
+         if (CONSP (XCDR (event)) && EQ (kind, Qmouse_click))
+           position = EVENT_START (event);
+       }
     }
 
   /* Key sequences beginning with mouse clicks
@@ -1709,7 +1708,8 @@ specified buffer position instead of point are used.
              
              pos = XCDR (string);
              string = XCAR (string);
-             if (XINT (pos) >= 0
+             if (INTEGERP (pos)
+                 && XINT (pos) >= 0
                  && XINT (pos) < SCHARS (string))
                {
                  map = Fget_text_property (pos, Qlocal_map, string);