(tool_bar_item_info): Avoid calling Fget_text_property
authorGerd Moellmann <gerd@gnu.org>
Sat, 17 Nov 2001 10:46:45 +0000 (10:46 +0000)
committerGerd Moellmann <gerd@gnu.org>
Sat, 17 Nov 2001 10:46:45 +0000 (10:46 +0000)
with invalid position.

src/ChangeLog
src/xdisp.c

index dcd69d8..90f8929 100644 (file)
@@ -1,3 +1,8 @@
+2001-11-17  Gerd Moellmann  <gerd@gnu.org>
+
+       * xdisp.c (tool_bar_item_info): Avoid calling Fget_text_property
+       with invalid position.
+
 2001-11-16  Richard M. Stallman  <rms@gnu.org>
 
        * syswait.h: Delete conditionals for HPUX7, ISC 4.1, and convex.
index 0922084..332c11c 100644 (file)
@@ -7935,11 +7935,18 @@ tool_bar_item_info (f, glyph, prop_idx)
 {
   Lisp_Object prop;
   int success_p;
+  int charpos;
+
+  /* This function can be called asynchronously, which means we must
+     exclude any possibility that Fget_text_property signals an
+     error.  */
+  charpos = min (XSTRING (f->current_tool_bar_string)->size, glyph->charpos);
+  charpos = max (0, charpos);
   
   /* Get the text property `menu-item' at pos. The value of that
      property is the start index of this item's properties in
      F->tool_bar_items.  */
-  prop = Fget_text_property (make_number (glyph->charpos),
+  prop = Fget_text_property (make_number (charpos),
                             Qmenu_item, f->current_tool_bar_string);
   if (INTEGERP (prop))
     {