*** empty log message ***
authorroot <root>
Sat, 12 Feb 2005 18:55:04 +0000 (18:55 +0000)
committerroot <root>
Sat, 12 Feb 2005 18:55:04 +0000 (18:55 +0000)
Changes
src/keyboard.C
src/rxvtfont.C

diff --git a/Changes b/Changes
index 7c01a1c..4ea1024 100644 (file)
--- a/Changes
+++ b/Changes
@@ -16,6 +16,10 @@ WISH: OnTheSpot editing.
 WISH: tabbed windows (hey, just use screen...)
 WISH: just for fun, do shade and tint with XRender.
 
+       - fix a bug when parsing fontnames and another one
+          for empty keymaps which could result in crashes
+          (Kuang-che Wu).
+
 5.0  Fri Feb 11 18:31:48 CET 2005
        - document a race-free hack to start urxvtd.
         - document all(?) environment variables used and set by rxvt.
index a307437..d3e5c6e 100644 (file)
@@ -8,6 +8,7 @@
 #include "keyboard.h"
 #include "command.h"
 
+#if STOCK_KEYMAP
 ////////////////////////////////////////////////////////////////////////////////
 // default keycode translation map and keyevent handlers
 
@@ -34,6 +35,7 @@ keysym_t keyboard_manager::stock_keymap[] = {
 //{            '0', MetaMask|ControlMask,    10,       keysym_t::RANGE, "0" "\033<M-C-%c>"},
 //{            'a', MetaMask|ControlMask,    26,       keysym_t::RANGE, "a" "\033<M-C-%c>"},
 };
+#endif
 
 static void
 output_string (rxvt_term *rt, const char *str)
@@ -209,11 +211,14 @@ keyboard_manager::register_keymap (keysym_t *key)
 void
 keyboard_manager::register_done ()
 {
-  unsigned int i, n = sizeof (stock_keymap) / sizeof (keysym_t);
+#if STOCK_KEYMAP
+  int n = sizeof (stock_keymap) / sizeof (keysym_t);
 
-  if (keymap.back () != &stock_keymap[n - 1])
-    for (i = 0; i < n; ++i)
+  //TODO: shield against repeated calls and empty keymap
+  //if (keymap.back () != &stock_keymap[n - 1])
+    for (int i = 0; i < n; ++i)
       register_keymap (&stock_keymap[i]);
+#endif
 
   purge_duplicate_keymap ();
 
index 2021df7..22e677e 100644 (file)
@@ -1383,7 +1383,8 @@ rxvt_fontset::add_fonts (const char *desc)
 
       do
         {
-          while (*desc <= ' ') desc++;
+          while (*desc && *desc <= ' ')
+            desc++;
 
           codeset cs = CS_UNICODE;