diff options
author | dahlia | 2010-06-19 16:07:35 -0700 |
---|---|---|
committer | dahlia | 2010-06-19 16:07:35 -0700 |
commit | c571c33b6b0ace77e3626556ee1e048e588a3705 (patch) | |
tree | e78b32853f3698570b7e4d2e6a26dc63bfa471ac /OpenSim | |
parent | This is a HACK! Downright nasty. For some reason, the devs of the mysql (diff) | |
download | opensim-SC-c571c33b6b0ace77e3626556ee1e048e588a3705.zip opensim-SC-c571c33b6b0ace77e3626556ee1e048e588a3705.tar.gz opensim-SC-c571c33b6b0ace77e3626556ee1e048e588a3705.tar.bz2 opensim-SC-c571c33b6b0ace77e3626556ee1e048e588a3705.tar.xz |
fix faulty profile cut parameter checking in llSetPrimitiveParams() - see Mantis #4510
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs index 59ab26b..86d0c30 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs | |||
@@ -6516,10 +6516,15 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
6516 | if (cut.y > 1f) | 6516 | if (cut.y > 1f) |
6517 | { | 6517 | { |
6518 | cut.y = 1f; | 6518 | cut.y = 1f; |
6519 | } | 6519 | } |
6520 | if (cut.y - cut.x < 0.05f) | 6520 | if (cut.y - cut.x < 0.05f) |
6521 | { | 6521 | { |
6522 | cut.x = cut.y - 0.05f; | 6522 | cut.x = cut.y - 0.05f; |
6523 | if (cut.x < 0.0f) | ||
6524 | { | ||
6525 | cut.x = 0.0f; | ||
6526 | cut.y = 0.05f; | ||
6527 | } | ||
6523 | } | 6528 | } |
6524 | shapeBlock.ProfileBegin = (ushort)(50000 * cut.x); | 6529 | shapeBlock.ProfileBegin = (ushort)(50000 * cut.x); |
6525 | shapeBlock.ProfileEnd = (ushort)(50000 * (1 - cut.y)); | 6530 | shapeBlock.ProfileEnd = (ushort)(50000 * (1 - cut.y)); |
@@ -6715,9 +6720,14 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
6715 | { | 6720 | { |
6716 | profilecut.y = 1f; | 6721 | profilecut.y = 1f; |
6717 | } | 6722 | } |
6718 | if (profilecut.y - cut.x < 0.05f) | 6723 | if (profilecut.y - profilecut.x < 0.05f) |
6719 | { | 6724 | { |
6720 | profilecut.x = cut.y - 0.05f; | 6725 | profilecut.x = profilecut.y - 0.05f; |
6726 | if (profilecut.x < 0.0f) | ||
6727 | { | ||
6728 | profilecut.x = 0.0f; | ||
6729 | profilecut.y = 0.05f; | ||
6730 | } | ||
6721 | } | 6731 | } |
6722 | shapeBlock.ProfileBegin = (ushort)(50000 * profilecut.x); | 6732 | shapeBlock.ProfileBegin = (ushort)(50000 * profilecut.x); |
6723 | shapeBlock.ProfileEnd = (ushort)(50000 * (1 - profilecut.y)); | 6733 | shapeBlock.ProfileEnd = (ushort)(50000 * (1 - profilecut.y)); |