- 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");