user32: Allocate a dual A/W winproc for DefWindowProc.
diff --git a/dlls/user32/class.c b/dlls/user32/class.c
index c682812..4f6c7b5 100644
--- a/dlls/user32/class.c
+++ b/dlls/user32/class.c
@@ -416,6 +416,9 @@
     register_builtin( &MENU_builtin_class );
     register_builtin( &SCROLL_builtin_class );
     register_builtin( &STATIC_builtin_class );
+
+    /* the DefWindowProc winprocs are magic too */
+    WINPROC_AllocProc( DefWindowProcA, DefWindowProcW );
 }
 
 
diff --git a/dlls/user32/tests/class.c b/dlls/user32/tests/class.c
index bd1cde6..2af4c2b 100644
--- a/dlls/user32/tests/class.c
+++ b/dlls/user32/tests/class.c
@@ -602,7 +602,7 @@
                 (void *)GetClassLongPtrA(hwnd, GCLP_WNDPROC), pDefWindowProcA);
         }
         else
-        todo_wine {
+        {
             ok(GetWindowLongPtrA(hwnd, GWLP_WNDPROC) == (LONG_PTR)pDefWindowProcA, "Wrong ANSI wndproc: %p vs %p\n",
                 (void *)GetWindowLongPtrA(hwnd, GWLP_WNDPROC), pDefWindowProcA);
             ok(GetClassLongPtrA(hwnd, GCLP_WNDPROC) == (ULONG_PTR)pDefWindowProcA, "Wrong ANSI wndproc: %p vs %p\n",
@@ -617,7 +617,7 @@
                 (void *)GetClassLongPtrW(hwnd, GCLP_WNDPROC), pDefWindowProcW);
         }
         else
-        todo_wine {
+        {
             ok(GetWindowLongPtrW(hwnd, GWLP_WNDPROC) == (LONG_PTR)pDefWindowProcW, "Wrong Unicode wndproc: %p vs %p\n",
                 (void *)GetWindowLongPtrW(hwnd, GWLP_WNDPROC), pDefWindowProcW);
             ok(GetClassLongPtrW(hwnd, GCLP_WNDPROC) == (ULONG_PTR)pDefWindowProcW, "Wrong Unicode wndproc: %p vs %p\n",