diff -Pru glib-2.0.1/glib/giowin32.c glib/glib/giowin32.c
--- glib-2.0.1/glib/giowin32.c	Tue Mar 19 05:58:56 2002
+++ glib/glib/giowin32.c	Sat Apr 27 15:30:42 2002
@@ -526,6 +526,7 @@
    * _endthreadex() for us.
    */
 
+  if (channel && channel->thread_handle && channel->thread_handle != (void*)0xdddddddd)
   CloseHandle (channel->thread_handle);
 
   return 0;
diff -Pru glib-2.0.1/glib/glib.def glib/glib/glib.def
--- glib-2.0.1/glib/glib.def	Mon Nov 19 00:30:54 2001
+++ glib/glib/glib.def	Sat Apr 27 15:30:42 2002
@@ -743,3 +743,4 @@
 	glib_mem_profiler_table
 	glib_micro_version
 	glib_minor_version
+	g_convert_init
diff -Pru glib-2.0.1/glib/gmain.c glib/glib/gmain.c
--- glib-2.0.1/glib/gmain.c	Thu Mar  7 00:43:52 2002
+++ glib/glib/gmain.c	Sat Apr 27 15:30:42 2002
@@ -282,7 +282,7 @@
       }
 
   if (timeout == -1)
-    timeout = INFINITE;
+    timeout = 10; // INFINITE;
 
   if (poll_msgs)
     {
diff -Pru glib-2.0.1/glib/gunichartables.h glib/glib/gunichartables.h
--- glib-2.0.1/glib/gunichartables.h	Wed Nov 14 11:32:42 2001
+++ glib/glib/gunichartables.h	Sat Apr 27 15:30:42 2002
@@ -6066,6 +6066,7 @@
 
 /* Table of casefolding cases that can't be derived by lowercasing
  */
+#if 0
 static const struct {
   guint16 ch;
   gchar data[7];
@@ -6230,5 +6231,171 @@
 { 0xfb16, "վն" },
 { 0xfb17, "մխ" },
 };
+#else
+static const struct {
+  guint16 ch;
+  gchar data[7];
+} casefold_table[] = {
+{ 0xb5, "\xce\xbc" },
+{ 0xdf, "\x73\x73" },
+{ 0x131, "\x69" },
+{ 0x149, "\xca\xbc\x6e" },
+{ 0x17f, "\x73" },
+{ 0x1f0, "\x6a\xcc\x8c" },
+{ 0x345, "\xce\xb9" },
+{ 0x390, "\xce\xb9\xcc\x88\xcc\x81" },
+{ 0x3b0, "\xcf\x85\xcc\x88\xcc\x81" },
+{ 0x3c2, "\xcf\x83" },
+{ 0x3d0, "\xce\xb2" },
+{ 0x3d1, "\xce\xb8" },
+{ 0x3d5, "\xcf\x86" },
+{ 0x3d6, "\xcf\x80" },
+{ 0x3f0, "\xce\xba" },
+{ 0x3f1, "\xcf\x81" },
+{ 0x3f2, "\xcf\x83" },
+{ 0x3f5, "\xce\xb5" },
+{ 0x587, "\xd5\xa5\xd6\x82" },
+{ 0x1e96, "\x68\xcc\xb1" },
+{ 0x1e97, "\x74\xcc\x88" },
+{ 0x1e98, "\x77\xcc\x8a" },
+{ 0x1e99, "\x79\xcc\x8a" },
+{ 0x1e9a, "\x61\xca\xbe" },
+{ 0x1e9b, "\xe1\xb9\xa1" },
+{ 0x1f50, "\xcf\x85\xcc\x93" },
+{ 0x1f52, "\xcf\x85\xcc\x93\xcc\x80" },
+{ 0x1f54, "\xcf\x85\xcc\x93\xcc\x81" },
+{ 0x1f56, "\xcf\x85\xcc\x93\xcd\x82" },
+{ 0x1f80, "\xe1\xbc\x80\xce\xb9" },
+{ 0x1f81, "\xe1\xbc\x81\xce\xb9" },
+{ 0x1f82, "\xe1\xbc\x82\xce\xb9" },
+{ 0x1f83, "\xe1\xbc\x83\xce\xb9" },
+{ 0x1f84, "\xe1\xbc\x84\xce\xb9" },
+{ 0x1f85, "\xe1\xbc\x85\xce\xb9" },
+{ 0x1f86, "\xe1\xbc\x86\xce\xb9" },
+{ 0x1f87, "\xe1\xbc\x87\xce\xb9" },
+{ 0x1f88, "\xe1\xbc\x80\xce\xb9" },
+{ 0x1f89, "\xe1\xbc\x81\xce\xb9" },
+{ 0x1f8a, "\xe1\xbc\x82\xce\xb9" },
+{ 0x1f8b, "\xe1\xbc\x83\xce\xb9" },
+{ 0x1f8c, "\xe1\xbc\x84\xce\xb9" },
+{ 0x1f8d, "\xe1\xbc\x85\xce\xb9" },
+{ 0x1f8e, "\xe1\xbc\x86\xce\xb9" },
+{ 0x1f8f, "\xe1\xbc\x87\xce\xb9" },
+{ 0x1f90, "\xe1\xbc\xa0\xce\xb9" },
+{ 0x1f91, "\xe1\xbc\xa1\xce\xb9" },
+{ 0x1f92, "\xe1\xbc\xa2\xce\xb9" },
+{ 0x1f93, "\xe1\xbc\xa3\xce\xb9" },
+{ 0x1f94, "\xe1\xbc\xa4\xce\xb9" },
+{ 0x1f95, "\xe1\xbc\xa5\xce\xb9" },
+{ 0x1f96, "\xe1\xbc\xa6\xce\xb9" },
+{ 0x1f97, "\xe1\xbc\xa7\xce\xb9" },
+{ 0x1f98, "\xe1\xbc\xa0\xce\xb9" },
+{ 0x1f99, "\xe1\xbc\xa1\xce\xb9" },
+{ 0x1f9a, "\xe1\xbc\xa2\xce\xb9" },
+{ 0x1f9b, "\xe1\xbc\xa3\xce\xb9" },
+{ 0x1f9c, "\xe1\xbc\xa4\xce\xb9" },
+{ 0x1f9d, "\xe1\xbc\xa5\xce\xb9" },
+{ 0x1f9e, "\xe1\xbc\xa6\xce\xb9" },
+{ 0x1f9f, "\xe1\xbc\xa7\xce\xb9" },
+{ 0x1fa0, "\xe1\xbd\xa0\xce\xb9" },
+{ 0x1fa1, "\xe1\xbd\xa1\xce\xb9" },
+{ 0x1fa2, "\xe1\xbd\xa2\xce\xb9" },
+{ 0x1fa3, "\xe1\xbd\xa3\xce\xb9" },
+{ 0x1fa4, "\xe1\xbd\xa4\xce\xb9" },
+{ 0x1fa5, "\xe1\xbd\xa5\xce\xb9" },
+{ 0x1fa6, "\xe1\xbd\xa6\xce\xb9" },
+{ 0x1fa7, "\xe1\xbd\xa7\xce\xb9" },
+{ 0x1fa8, "\xe1\xbd\xa0\xce\xb9" },
+{ 0x1fa9, "\xe1\xbd\xa1\xce\xb9" },
+{ 0x1faa, "\xe1\xbd\xa2\xce\xb9" },
+{ 0x1fab, "\xe1\xbd\xa3\xce\xb9" },
+{ 0x1fac, "\xe1\xbd\xa4\xce\xb9" },
+{ 0x1fad, "\xe1\xbd\xa5\xce\xb9" },
+{ 0x1fae, "\xe1\xbd\xa6\xce\xb9" },
+{ 0x1faf, "\xe1\xbd\xa7\xce\xb9" },
+{ 0x1fb2, "\xe1\xbd\xb0\xce\xb9" },
+{ 0x1fb3, "\xce\xb1\xce\xb9" },
+{ 0x1fb4, "\xce\xac\xce\xb9" },
+{ 0x1fb6, "\xce\xb1\xcd\x82" },
+{ 0x1fb7, "\xce\xb1\xcd\x82\xce\xb9" },
+{ 0x1fbc, "\xce\xb1\xce\xb9" },
+{ 0x1fbe, "\xce\xb9" },
+{ 0x1fc2, "\xe1\xbd\xb4\xce\xb9" },
+{ 0x1fc3, "\xce\xb7\xce\xb9" },
+{ 0x1fc4, "\xce\xae\xce\xb9" },
+{ 0x1fc6, "\xce\xb7\xcd\x82" },
+{ 0x1fc7, "\xce\xb7\xcd\x82\xce\xb9" },
+{ 0x1fcc, "\xce\xb7\xce\xb9" },
+{ 0x1fd2, "\xce\xb9\xcc\x88\xcc\x80" },
+{ 0x1fd3, "\xce\xb9\xcc\x88\xcc\x81" },
+{ 0x1fd6, "\xce\xb9\xcd\x82" },
+{ 0x1fd7, "\xce\xb9\xcc\x88\xcd\x82" },
+{ 0x1fe2, "\xcf\x85\xcc\x88\xcc\x80" },
+{ 0x1fe3, "\xcf\x85\xcc\x88\xcc\x81" },
+{ 0x1fe4, "\xcf\x81\xcc\x93" },
+{ 0x1fe6, "\xcf\x85\xcd\x82" },
+{ 0x1fe7, "\xcf\x85\xcc\x88\xcd\x82" },
+{ 0x1ff2, "\xe1\xbd\xbc\xce\xb9" },
+{ 0x1ff3, "\xcf\x89\xce\xb9" },
+{ 0x1ff4, "\xcf\x8e\xce\xb9" },
+{ 0x1ff6, "\xcf\x89\xcd\x82" },
+{ 0x1ff7, "\xcf\x89\xcd\x82\xce\xb9" },
+{ 0x1ffc, "\xcf\x89\xce\xb9" },
+{ 0x2160, "\xe2\x85\xb0" },
+{ 0x2161, "\xe2\x85\xb1" },
+{ 0x2162, "\xe2\x85\xb2" },
+{ 0x2163, "\xe2\x85\xb3" },
+{ 0x2164, "\xe2\x85\xb4" },
+{ 0x2165, "\xe2\x85\xb5" },
+{ 0x2166, "\xe2\x85\xb6" },
+{ 0x2167, "\xe2\x85\xb7" },
+{ 0x2168, "\xe2\x85\xb8" },
+{ 0x2169, "\xe2\x85\xb9" },
+{ 0x216a, "\xe2\x85\xba" },
+{ 0x216b, "\xe2\x85\xbb" },
+{ 0x216c, "\xe2\x85\xbc" },
+{ 0x216d, "\xe2\x85\xbd" },
+{ 0x216e, "\xe2\x85\xbe" },
+{ 0x216f, "\xe2\x85\xbf" },
+{ 0x24b6, "\xe2\x93\x90" },
+{ 0x24b7, "\xe2\x93\x91" },
+{ 0x24b8, "\xe2\x93\x92" },
+{ 0x24b9, "\xe2\x93\x93" },
+{ 0x24ba, "\xe2\x93\x94" },
+{ 0x24bb, "\xe2\x93\x95" },
+{ 0x24bc, "\xe2\x93\x96" },
+{ 0x24bd, "\xe2\x93\x97" },
+{ 0x24be, "\xe2\x93\x98" },
+{ 0x24bf, "\xe2\x93\x99" },
+{ 0x24c0, "\xe2\x93\x9a" },
+{ 0x24c1, "\xe2\x93\x9b" },
+{ 0x24c2, "\xe2\x93\x9c" },
+{ 0x24c3, "\xe2\x93\x9d" },
+{ 0x24c4, "\xe2\x93\x9e" },
+{ 0x24c5, "\xe2\x93\x9f" },
+{ 0x24c6, "\xe2\x93\xa0" },
+{ 0x24c7, "\xe2\x93\xa1" },
+{ 0x24c8, "\xe2\x93\xa2" },
+{ 0x24c9, "\xe2\x93\xa3" },
+{ 0x24ca, "\xe2\x93\xa4" },
+{ 0x24cb, "\xe2\x93\xa5" },
+{ 0x24cc, "\xe2\x93\xa6" },
+{ 0x24cd, "\xe2\x93\xa7" },
+{ 0x24ce, "\xe2\x93\xa8" },
+{ 0x24cf, "\xe2\x93\xa9" },
+{ 0xfb00, "\x66\x66" },
+{ 0xfb01, "\x66\x69" },
+{ 0xfb02, "\x66\x6c" },
+{ 0xfb03, "\x66\x66\x69" },
+{ 0xfb04, "\x66\x66\x6c" },
+{ 0xfb05, "\x73\x74" },
+{ 0xfb06, "\x73\x74" },
+{ 0xfb13, "\xd5\xb4\xd5\xb6" },
+{ 0xfb14, "\xd5\xb4\xd5\xa5" },
+{ 0xfb15, "\xd5\xb4\xd5\xab" },
+{ 0xfb16, "\xd5\xbe\xd5\xb6" },
+{ 0xfb17, "\xd5\xb4\xd5\xad" },
+};
+#endif
 
 #endif /* CHARTABLES_H */
diff -Pru glib-2.0.1/tests/makefile.msc glib/tests/makefile.msc
--- glib-2.0.1/tests/makefile.msc	Fri Mar 29 08:32:02 2002
+++ glib/tests/makefile.msc	Sat Apr 27 15:37:22 2002
@@ -39,7 +39,7 @@
 # strfunc-test doesn't compile with MSVC
 #	strfunc-test.exe\
 	string-test.exe	\
-	strtod-test.exe \
+#	strtod-test.exe \
 	thread-test.exe	\
 	threadpool-test.exe\
 	tree-test.exe	\
diff -Pru glib-2.0.1/tests/patterntest.c glib/tests/patterntest.c
--- glib-2.0.1/tests/patterntest.c	Fri Nov 23 03:56:12 2001
+++ glib/tests/patterntest.c	Sat Apr 27 15:30:42 2002
@@ -224,6 +224,7 @@
   TEST_EQUAL ("AB*CD", "AB*?*CD", FALSE);
   TEST_EQUAL ("ABC*", "ABC?", FALSE);
 
+#if 0
   TEST_MATCH("*x", "x", TRUE);
   TEST_MATCH("*x", "xx", TRUE);
   TEST_MATCH("*x", "yyyx", TRUE);
@@ -252,6 +253,36 @@
   TEST_MATCH("ab*", "ab��", TRUE);
   TEST_MATCH("ab*�", "ab��", TRUE);
   TEST_MATCH("ab*�", "aba�x�", TRUE);
+#else
+  TEST_MATCH("\x2a\x78", "\x78", TRUE);
+  TEST_MATCH("\x2a\x78", "\x78\x78", TRUE);
+  TEST_MATCH("\x2a\x78", "\x79\x79\x79\x78", TRUE);
+  TEST_MATCH("\x2a\x78", "\x79\x79\x78\x79", FALSE);
+  TEST_MATCH("\x3f\x78", "\x78", FALSE);
+  TEST_MATCH("\x3f\x78", "\x78\x78", TRUE);
+  TEST_MATCH("\x3f\x78", "\x79\x79\x79\x78", FALSE);
+  TEST_MATCH("\x3f\x78", "\x79\x79\x78\x79", FALSE);
+  TEST_MATCH("\x2a\x3f\x78", "\x78\x78", TRUE);
+  TEST_MATCH("\x3f\x2a\x78", "\x78\x78", TRUE);
+  TEST_MATCH("\x2a\x3f\x78", "\x78", FALSE);
+  TEST_MATCH("\x3f\x2a\x78", "\x78", FALSE);
+  TEST_MATCH("\x2a\x3f\x2a\x78", "\x79\x78", TRUE);
+  TEST_MATCH("\x2a\x3f\x2a\x78", "\x78\x78\x78\x78", TRUE);
+  TEST_MATCH("\x78\x2a\x3f\x3f", "\x78\x79\x7a\x77", TRUE);
+  TEST_MATCH("\x2a\x78", "\xc4\x78", TRUE);
+  TEST_MATCH("\x3f\x78", "\xc4\x78", TRUE);
+  TEST_MATCH("\x3f\x3f\x78", "\xc4\x78", FALSE);
+  TEST_MATCH("\x61\x62\xe4\xf6", "\x61\x62\xe4\xf6", TRUE);
+  TEST_MATCH("\x61\x62\xe4\xf6", "\x61\x62\x61\x6f", FALSE);
+  TEST_MATCH("\x61\x62\x3f\xf6", "\x61\x62\xe4\xf6", TRUE);
+  TEST_MATCH("\x61\x62\x3f\xf6", "\x61\x62\x61\x6f", FALSE);
+  TEST_MATCH("\x61\x62\xe4\x3f", "\x61\x62\xe4\xf6", TRUE);
+  TEST_MATCH("\x61\x62\xe4\x3f", "\x61\x62\x61\x6f", FALSE);
+  TEST_MATCH("\x61\x62\x3f\x3f", "\x61\x62\xe4\xf6", TRUE);
+  TEST_MATCH("\x61\x62\x2a", "\x61\x62\xe4\xf6", TRUE);
+  TEST_MATCH("\x61\x62\x2a\xf6", "\x61\x62\xe4\xf6", TRUE);
+  TEST_MATCH("\x61\x62\x2a\xf6", "\x61\x62\x61\xf6\x78\xf6", TRUE);
+#endif
   
   g_print ("\n%u tests passed, %u failed\n", passed, failed);
 
