changeset 104936:4556ab401b02

(where_is_internal): Don't erroneously return nil right after filling the cache. (where_is_internal_1): Fix up typo.
author Stefan Monnier <monnier@iro.umontreal.ca>
date Fri, 11 Sep 2009 05:10:15 +0000
parents bd45a173a25f
children 1757b9590368
files src/ChangeLog src/keymap.c
diffstat 2 files changed, 17 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/src/ChangeLog	Fri Sep 11 04:27:38 2009 +0000
+++ b/src/ChangeLog	Fri Sep 11 05:10:15 2009 +0000
@@ -1,3 +1,9 @@
+2009-09-11  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* keymap.c (where_is_internal): Don't erroneously return nil right after
+	filling the cache.
+	(where_is_internal_1): Fix up typo.
+
 2009-09-11  Glenn Morris  <rgm@gnu.org>
 
 	* frame.c (Fx_parse_geometry): Unify the X and NS versions so that they
--- a/src/keymap.c	Fri Sep 11 04:27:38 2009 +0000
+++ b/src/keymap.c	Fri Sep 11 05:10:15 2009 +0000
@@ -2765,12 +2765,16 @@
     }
 
   if (nomenus && !noindirect)
-    /* Remember for which keymaps this cache was built.
-       We do it here (late) because we want to keep where_is_cache_keymaps
-       set to t while the cache isn't fully filled.  */
-    where_is_cache_keymaps = keymaps;
-
-  return data.sequences;
+    { /* Remember for which keymaps this cache was built.
+	 We do it here (late) because we want to keep where_is_cache_keymaps
+	 set to t while the cache isn't fully filled.  */
+      where_is_cache_keymaps = keymaps;
+      /* During cache-filling, data.sequences is not filled by
+	 where_is_internal_1.  */
+      return Fgethash (definition, where_is_cache, Qnil);
+    }
+  else
+    return data.sequences;
 }
 
 static Lisp_Object Vwhere_is_preferred_modifier;
@@ -2973,7 +2977,7 @@
   Lisp_Object sequence;
 
   /* Search through indirections unless that's not wanted.  */
-  if (noindirect)
+  if (!noindirect)
     binding = get_keyelt (binding, 0);
 
   /* End this iteration if this element does not match