--- unpatched-pango/modules/basic/basic-win32.c	2009-11-23 08:19:48.000000000 +-0200
+++ patched-pango/modules/basic/basic-win32.c	2010-04-08 17:50:37.000000000 +-0200
@@ -670,28 +670,32 @@
 		 PangoGlyphString    *glyphs)
 {
   wchar_t *wtext;
   long wlen;
   int i;
   gboolean retval = TRUE;
-  SCRIPT_CACHE script_cache[100];
+  static SCRIPT_CACHE script_cache[100];
+  static int init=0;
 
   if (!pango_win32_font_select_font (font, hdc))
     return FALSE;
 
   wtext = g_utf8_to_utf16 (text, length, NULL, &wlen, NULL);
   if (wtext == NULL)
     retval = FALSE;
 
   if (retval)
     {
-      memset (script_cache, 0, sizeof (script_cache));
+      if (!init){
+        init=1;
+        memset (script_cache, 0, sizeof (script_cache));
+      }
       retval = itemize_shape_and_place (font, hdc, wtext, wlen, analysis, glyphs, script_cache);
-      for (i = 0; i < G_N_ELEMENTS (script_cache); i++)
-	if (script_cache[i])
-	  (*script_free_cache)(&script_cache[i]);
+//      for (i = 0; i < G_N_ELEMENTS (script_cache); i++)
+//	if (script_cache[i])
+//	  (*script_free_cache)(&script_cache[i]);
     }
 
   if (retval)
     {
       convert_log_clusters_to_byte_offsets (text, length, glyphs);
 #ifdef BASIC_WIN32_DEBUGGING
