Fix http://opensimulator.org/mantis/view.php?id=4657 where OpenSim.Grid.UserServer.exe fails on startup if no previous config

probably appears to occur because mono 2.4.2.3 (and possibly later) erroneously returns a value of 0 for BufferWidth and BufferHeight in some circumstances
slimupdates
Justin Clark-Casey (justincc) 2010-04-16 20:40:01 +01:00
parent a7449a82bc
commit 48f3733963
2 changed files with 48 additions and 17 deletions

View File

@ -105,14 +105,30 @@ namespace OpenSim.Framework.Console
int left = System.Console.CursorLeft; int left = System.Console.CursorLeft;
if (left < 0) if (left < 0)
{
System.Console.CursorLeft = 0; System.Console.CursorLeft = 0;
else if (left >= System.Console.BufferWidth) }
System.Console.CursorLeft = System.Console.BufferWidth - 1; else
{
int bw = System.Console.BufferWidth;
// On Mono 2.4.2.3 (and possibly above), the buffer value is sometimes erroneously zero (Mantis 4657)
if (bw > 0 && left >= bw)
System.Console.CursorLeft = bw - 1;
}
if (top < 0) if (top < 0)
{
top = 0; top = 0;
if (top >= System.Console.BufferHeight) }
top = System.Console.BufferHeight - 1; else
{
int bh = System.Console.BufferHeight;
// On Mono 2.4.2.3 (and possibly above), the buffer value is sometimes erroneously zero (Mantis 4657)
if (bh > 0 && top >= bh)
top = bh - 1;
}
System.Console.CursorTop = top; System.Console.CursorTop = top;
@ -138,14 +154,29 @@ namespace OpenSim.Framework.Console
int top = System.Console.CursorTop; int top = System.Console.CursorTop;
if (top < 0) if (top < 0)
{
System.Console.CursorTop = 0; System.Console.CursorTop = 0;
else if (top >= System.Console.BufferHeight) }
System.Console.CursorTop = System.Console.BufferHeight - 1; else
{
int bh = System.Console.BufferHeight;
// On Mono 2.4.2.3 (and possibly above), the buffer value is sometimes erroneously zero (Mantis 4657)
if (bh > 0 && top >= bh)
System.Console.CursorTop = bh - 1;
}
if (left < 0) if (left < 0)
{
left = 0; left = 0;
if (left >= System.Console.BufferWidth) }
left = System.Console.BufferWidth - 1; else
{
int bw = System.Console.BufferWidth;
// On Mono 2.4.2.3 (and possibly above), the buffer value is sometimes erroneously zero (Mantis 4657)
if (bw > 0 && left >= bw)
left = bw - 1;
}
System.Console.CursorLeft = left; System.Console.CursorLeft = left;