- More proper fix for the QEMU/Abiword regression. Remove kernel32 hack. Thanks to Filip and The Munger.
Modified: trunk/reactos/lib/kernel32/misc/atom.c
Modified: trunk/reactos/lib/ntdll/ldr/startup.c

Modified: trunk/reactos/lib/kernel32/misc/atom.c
--- trunk/reactos/lib/kernel32/misc/atom.c	2006-01-03 22:25:09 UTC (rev 20555)
+++ trunk/reactos/lib/kernel32/misc/atom.c	2006-01-03 22:36:36 UTC (rev 20556)
@@ -72,7 +72,6 @@
             /* Check if we can abuse the TEB */
             if (AnsiString.MaximumLength > 260)
             {
-RosHack:
                 /* We can't, allocate a new string */
                 AtomNameString = &UnicodeString;
                 Status = RtlAnsiStringToUnicodeString(AtomNameString,
@@ -84,14 +83,6 @@
                 /* We can! Get the TEB String */
                 AtomNameString = &NtCurrentTeb()->StaticUnicodeString;
 
-                /* FIXME: HACK! */
-                if (!AtomNameString->MaximumLength)
-                {
-                    DPRINT1("Hit the ROS TEB Static Unicode String Bug\n",
-                            "Please try to fix the underlying problem!!!\n");
-                    goto RosHack;
-                }
-
                 /* Convert it into the TEB */
                 Status = RtlAnsiStringToUnicodeString(AtomNameString,
                                                       &AnsiString,
@@ -182,7 +173,6 @@
             /* Check if we can abuse the TEB */
             if (AnsiString.MaximumLength > 260)
             {
-RosHack:
                 /* We can't, allocate a new string */
                 AtomNameString = &UnicodeString;
                 Status = RtlAnsiStringToUnicodeString(AtomNameString,
@@ -194,14 +184,6 @@
                 /* We can! Get the TEB String */
                 AtomNameString = &NtCurrentTeb()->StaticUnicodeString;
 
-                /* FIXME: HACK! */
-                if (!AtomNameString->MaximumLength)
-                {
-                    DPRINT1("Hit the ROS TEB Static Unicode String Bug\n",
-                            "Please try to fix the underlying problem!!!\n");
-                    goto RosHack;
-                }
-
                 /* Convert it into the TEB */
                 Status = RtlAnsiStringToUnicodeString(AtomNameString,
                                                       &AnsiString,

Modified: trunk/reactos/lib/ntdll/ldr/startup.c
--- trunk/reactos/lib/ntdll/ldr/startup.c	2006-01-03 22:25:09 UTC (rev 20555)
+++ trunk/reactos/lib/ntdll/ldr/startup.c	2006-01-03 22:36:36 UTC (rev 20556)
@@ -377,6 +377,11 @@
        /* Load execution options */
        LoadImageFileExecutionOptions(Peb);
 
+       /* Initialize the static teb string */
+       NtCurrentTeb()->StaticUnicodeString.Length = 0;
+       NtCurrentTeb()->StaticUnicodeString.MaximumLength = sizeof(NtCurrentTeb()->StaticUnicodeBuffer);
+       NtCurrentTeb()->StaticUnicodeString.Buffer = NtCurrentTeb()->StaticUnicodeBuffer;
+
        /* build full ntdll path */
        wcscpy (FullNtDllPath, SharedUserData->NtSystemRoot);
        wcscat (FullNtDllPath, L"\\system32\\ntdll.dll");