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