- Dirty temporary fix to unregress abiword/qemu. Modified: trunk/reactos/lib/kernel32/misc/atom.c _____
Modified: trunk/reactos/lib/kernel32/misc/atom.c --- trunk/reactos/lib/kernel32/misc/atom.c 2006-01-03 21:34:19 UTC (rev 20554) +++ trunk/reactos/lib/kernel32/misc/atom.c 2006-01-03 22:25:09 UTC (rev 20555) @@ -72,6 +72,7 @@
/* Check if we can abuse the TEB */ if (AnsiString.MaximumLength > 260) { +RosHack: /* We can't, allocate a new string */ AtomNameString = &UnicodeString; Status = RtlAnsiStringToUnicodeString(AtomNameString, @@ -80,8 +81,18 @@ } else { - /* We can! Use the TEB */ + /* 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, FALSE); @@ -171,6 +182,7 @@ /* Check if we can abuse the TEB */ if (AnsiString.MaximumLength > 260) { +RosHack: /* We can't, allocate a new string */ AtomNameString = &UnicodeString; Status = RtlAnsiStringToUnicodeString(AtomNameString, @@ -179,8 +191,18 @@ } else { - /* We can! Use the TEB */ + /* 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, FALSE);