diff -u -r pango-1.1.1/modules/hangul/hangul-xft.c ../pango-1.1.1/modules/hangul/hangul-xft.c
--- pango-1.1.1/modules/hangul/hangul-xft.c	2002-08-07 11:11:37.000000000 -0400
+++ ../pango-1.1.1/modules/hangul/hangul-xft.c	2002-10-13 00:29:06.000000000 -0400
@@ -69,9 +69,9 @@
   gunichar wc;
   int i, j, composed;
 
-  if (length >= 3 && IS_L_S(text[0]) && IS_V_S(text[1]) && IS_T_S(text[2]))
+  if (length == 3 && IS_L_S(text[0]) && IS_V_S(text[1]) && IS_T_S(text[2]))
     composed = 3;
-  else if (length >= 2 && IS_L_S(text[0]) && IS_V_S(text[1]))
+  else if (length == 2 && IS_L_S(text[0]) && IS_V_S(text[1]))
     composed = 2;
   else
     composed = 0;
@@ -99,6 +99,7 @@
     {
       int jindex;
 
+      g_assert(LBASE <= text[i] && text[i] <= LBASE+0x100); 
       index = find_char (font, text[i]);
       if (index)
 	{
@@ -137,7 +138,7 @@
   int i;
   const char *p, *start;
 
-  gunichar jamos_static[3];
+  gunichar jamos_static[9];
   guint max_jamos = G_N_ELEMENTS (jamos_static);
   gunichar *jamos = jamos_static;
   int n_jamos;
@@ -169,8 +170,10 @@
       if (n_jamos == max_jamos)
 	{
 	  max_jamos++;
-	  if (jamos == jamos_static)
+	  if (jamos == jamos_static) {
 	    jamos = g_new (gunichar, max_jamos);
+     g_memmove(jamos,jamos_static,sizeof(gunichar) * G_N_ELEMENTS (jamos_static));
+          }
 	  else
 	    jamos = g_renew (gunichar, jamos, max_jamos);
 	}
diff -u -r pango-1.1.1/modules/hangul/hangul-x.c ../pango-1.1.1/modules/hangul/hangul-x.c
--- pango-1.1.1/modules/hangul/hangul-x.c	2002-08-02 15:18:01.000000000 -0400
+++ ../pango-1.1.1/modules/hangul/hangul-x.c	2002-10-13 07:25:28.000000000 -0400
@@ -759,7 +759,10 @@
 		{
 		  max_jamos++;
 		  if (jamos == jamos_static)
+                   { 
 		    jamos = g_new (gunichar2, max_jamos);
+       g_memmove(jamos,jamos_static,sizeof(gunichar) * G_N_ELEMENTS (jamos_static));
+                   }
 		  else
 		    jamos = g_renew (gunichar2, jamos, max_jamos);
 		}
