diff --git a/ChangeLog b/ChangeLog
index 858ff14..13f7138 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Mon Jul  4 17:44:26 CEST 2005 Daniel Veillard <daniel@veillard.com>
+
+	* runsuite.c: first stb at unimplemnted detection
+	* runtest.c: fixing Windows code
+
 Mon Jul  4 17:19:31 CEST 2005 Daniel Veillard <daniel@veillard.com>
 
 	* runsuite.c: fix on schemas error
diff --git a/runsuite.c b/runsuite.c
index c7dab7a..deef129 100644
--- a/runsuite.c
+++ b/runsuite.c
@@ -71,6 +71,7 @@
 static int nb_errors = 0;
 static int nb_internals = 0;
 static int nb_schematas = 0;
+static int nb_unimplemented = 0;
 static int nb_leaks = 0;
 static long libxmlMemoryAllocatedBase = 0;
 static int extraMemoryFromResolver = 0;
@@ -908,6 +909,14 @@
 	if (schemas == NULL) {
 	    test_log("valid schemas %s failed to parse\n",
 			path);
+	    ret = 1;
+	    nb_errors++;
+	}
+	if ((ret == 0) && (strstr(testErrors, "nimplemented") != NULL)) {
+	    test_log("valid schemas %s hit an unimplemented block\n",
+			path);
+	    ret = 1;
+	    nb_unimplemented++;
 	    nb_errors++;
 	}
 	instance = getNext(cur, "./ts:instanceTest[1]");
@@ -929,6 +938,14 @@
 	    test_log("Failed to detect error in schemas %s\n",
 			path);
 	    nb_errors++;
+	    ret = 1;
+	}
+	if ((ret == 0) && (strstr(testErrors, "nimplemented") != NULL)) {
+	    nb_unimplemented++;
+	    test_log("invalid schemas %s hit an unimplemented block\n",
+			path);
+	    ret = 1;
+	    nb_errors++;
 	}
     } else {
         test_log("testGroup line %ld misses unexpected validity value%s\n",
diff --git a/runtest.c b/runtest.c
index 5bacf51..faf500a 100644
--- a/runtest.c
+++ b/runtest.c
@@ -89,7 +89,7 @@
 
 #if defined(_WIN32) && !defined(__CYGWIN__)
 
-/* #include <windows.h> */
+#include <windows.h>
 
 typedef struct
 {
@@ -109,9 +109,7 @@
 
     if ((pattern == NULL) || (pglob == NULL)) return(-1);
     
-    ret = malloc(sizeof(glob_t));
-    if (ret == NULL)
-        return(-1);
+    ret = &pglob;
     memset(ret, 0, sizeof(glob_t));
     
     hFind = FindFirstFileA(pattern, &FindFileData);
@@ -121,7 +119,6 @@
     ret->gl_pathv = (char **) malloc(nb_paths * sizeof(char *));
     if (ret->gl_pathv == NULL) {
 	FindClose(hFind);
-        free(ret);
         return(-1);
     }
     ret->gl_pathv[ret->gl_pathc] = strdup(FindFileData.cFileName);
@@ -145,11 +142,13 @@
 
 done:
     FindClose(hFind);
-    *pglob = ret;
     return(0);
 }
-void globfree(glob_t *pglob) {
-    int i;
+ 
+
+
+static void globfree(glob_t *pglob) {
+    unsigned int i;
     if (pglob == NULL)
         return;
     
@@ -160,6 +159,7 @@
     free(pglob);
 }
 #define vsnprintf _vsnprintf
+#define snprintf _snprintf
 #else
 #include <glob.h>
 #endif
@@ -3737,12 +3737,14 @@
 #include <windows.h>
 #include <string.h>
 
+#define TEST_REPEAT_COUNT 500
+
 static HANDLE tid[MAX_ARGC];
 
 static DWORD WINAPI
 win32_thread_specific_data(void *private_data)
 {
-    return((DWORD) thread_specific_data());
+    return((DWORD) thread_specific_data(private_data));
 }
 
 static int
