changeset 73350:1a3368a80879

* keymap.c (Fkey_binding): Check Lisp_Object types before doing XCAR and XINT.
author Chong Yidong <cyd@stupidchicken.com>
date Fri, 13 Oct 2006 01:45:37 +0000
parents 43ccf7c7d312
children 29547db9ad61
files src/ChangeLog src/keymap.c
diffstat 2 files changed, 13 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/src/ChangeLog	Fri Oct 13 01:41:11 2006 +0000
+++ b/src/ChangeLog	Fri Oct 13 01:45:37 2006 +0000
@@ -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.
--- a/src/keymap.c	Fri Oct 13 01:41:11 2006 +0000
+++ b/src/keymap.c	Fri Oct 13 01:45:37 2006 +0000
@@ -1610,13 +1610,12 @@
 
       /* 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 @@
 	      
 	      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);