screen-4.0.3.patch   [plain text]


--- encoding.c	2003-09-08 07:25:23.000000000 -0700
+++ encoding.c	2006-10-23 05:58:14.000000000 -0700
@@ -995,8 +995,16 @@
     {
       /* full, recycle old entry */
       if (c1 >= 0xd800 && c1 < 0xe000)
-        comb_tofront(root, c1);
+        comb_tofront(root, c1 - 0xd800);
       i = combchars[root]->prev;
+      if (c1 == i + 0xd800) 
+	{
+	  /* completely full, can't recycle */
+	  debug("utf8_handle_comp: completely full!\n");
+	  mc->image = '?';
+	  mc->font  = 0;
+	  return;
+	}
       /* FIXME: delete old char from all buffers */
     }
   else if (!combchars[i])
--- patchlevel.h	2003-12-05 05:48:34.000000000 -0800
+++ patchlevel.h	2006-10-23 06:04:11.000000000 -0700
@@ -519,11 +519,14 @@
  * 05.12.2003  4.00.02 fixed a bug in the ansi parser. fixed execs
  *                     on ttys. fixed hardstatus line on blanked screen.
  *                     -- DISTRIBUTED
+ * 23.10.2006  4.00.03 fixed two bug in combining characters handling
+ *                     (cstone & Rich Felker).
+ *                     -- DISTRIBUTED
  */
 
 #define ORIGIN "FAU"
 #define REV 4
 #define VERS 0
-#define PATCHLEVEL 2
-#define DATE "5-Dec-03"
+#define PATCHLEVEL 3
+#define DATE "23-Oct-06"
 #define STATE ""