- 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");
Show replies by date