From dccdeb57bbda32f00c10783a11f5746d460485af Mon Sep 17 00:00:00 2001 From: Melanie Thielker Date: Sat, 13 Sep 2008 16:16:08 +0000 Subject: Fix some string to float casting nastiness. The "train script" now works. Also makes llGetFreeMemory return the constant 16384. LLGetFreeMemory is useless in SL, as it never goes up, only down. So, the only thing it is used for, in practice, is to detect an imminent stack/heap collision, a danger we don't have. --- .../Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs | 5 +++-- OpenSim/Region/ScriptEngine/Shared/LSL_Types.cs | 12 +++++++++++- 2 files changed, 14 insertions(+), 3 deletions(-) (limited to 'OpenSim/Region/ScriptEngine/Shared') diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs index 4da1b3b..e013369 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs @@ -4597,8 +4597,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api public LSL_Types.LSLInteger llGetFreeMemory() { m_host.AddScriptLPS(1); - NotImplemented("llGetFreeMemory"); - return 0; +// NotImplemented("llGetFreeMemory"); + // Make scripts desined for LSO happy + return 16384; } public LSL_Types.LSLString llGetRegionName() diff --git a/OpenSim/Region/ScriptEngine/Shared/LSL_Types.cs b/OpenSim/Region/ScriptEngine/Shared/LSL_Types.cs index 572debc..27af8a5 100644 --- a/OpenSim/Region/ScriptEngine/Shared/LSL_Types.cs +++ b/OpenSim/Region/ScriptEngine/Shared/LSL_Types.cs @@ -1689,7 +1689,17 @@ namespace OpenSim.Region.ScriptEngine.Shared static public explicit operator LSLFloat(string s) { - return new LSLFloat(double.Parse(s)); + Regex r = new Regex("^[ ]*-?[0-9]*\\.?[0-9]*[eE]?-?[0-9]*"); + Match m = r.Match(s); + string v = m.Groups[0].Value; + + while (v.Length > 0 && v.Substring(0, 1) == " ") + v = v.Substring(1); + + if (v == String.Empty) + v = "0"; + + return new LSLFloat(double.Parse(v)); } static public implicit operator LSLFloat(double d) -- cgit v1.1