mantis 9121: fix failed lsl string casts on lsl list sort

This commit is contained in:
UbitUmarov
2024-03-27 21:51:49 +00:00
parent acbec23f48
commit b8a0bba99d
2 changed files with 19 additions and 5 deletions

View File

@@ -1398,6 +1398,10 @@ namespace OpenSim.Region.ScriptEngine.Shared
LSLString r = (LSLString)right;
ret = string.CompareOrdinal(lsl.m_string, r.m_string);
}
else if (left is string ssl)
{
ret = string.CompareOrdinal(ssl, right as string);
}
else if (left is LSLFloat fl)
{
LSLFloat r = (LSLFloat)right;
@@ -1418,10 +1422,7 @@ namespace OpenSim.Region.ScriptEngine.Shared
return 0;
}
if (ascending)
return ret;
return -ret;
return ascending ? ret : -ret;
}
class HomogeneousComparer : IComparer
@@ -1449,6 +1450,10 @@ namespace OpenSim.Region.ScriptEngine.Shared
LSLString r = (LSLString)right;
ret = string.CompareOrdinal(lsl.m_string, r.m_string);
}
else if (left is string ssl)
{
ret = string.CompareOrdinal(ssl, right as string);
}
else if (left is LSLFloat fl)
{
LSLFloat r = (LSLFloat)right;
@@ -1491,6 +1496,10 @@ namespace OpenSim.Region.ScriptEngine.Shared
LSLString r = (LSLString)right;
return string.CompareOrdinal(lsl.m_string, r.m_string) > 0;
}
else if (left is string ssl)
{
return string.CompareOrdinal(ssl, right as string) > 0;
}
if (left is LSLFloat lf)
{
LSLFloat r = (LSLFloat)right;
@@ -1524,6 +1533,11 @@ namespace OpenSim.Region.ScriptEngine.Shared
LSLString r = (LSLString)right;
return string.CompareOrdinal(lsl.m_string, r.m_string) < 0;
}
else if (left is string ssl)
{
string sr = right as string;
return string.CompareOrdinal(ssl, sr) < 0;
}
if (left is LSLFloat lf)
{
LSLFloat r = (LSLFloat)right;

View File

@@ -97,7 +97,7 @@ namespace OpenSim.Region.ScriptEngine.Yengine
{
Name = "CustomDelegateAssembly"
};
AssemblyBuilder assemblyBuilder = AssemblyBuilder.DefineDynamicAssembly(assembly, AssemblyBuilderAccess.Run);
AssemblyBuilder assemblyBuilder = AssemblyBuilder.DefineDynamicAssembly(assembly, AssemblyBuilderAccess.RunAndCollect);
delegateModuleBuilder = assemblyBuilder.DefineDynamicModule("CustomDelegateModule");
}