Change ELSLInvalidType to ELSLTypeMismatch where appropriate.

The force type functions ff(), fi(), fs()... should normally trigger ELSLTypeMismatch when the input is not in the expected range of types, rather than ELSLInvalidType, which is reserved for the case where the type is not a valid LSL type.
This commit is contained in:
Sei Lisa 2017-10-14 11:33:18 +02:00
parent 3a849fe4b9
commit 6faa7816e6

View file

@ -255,6 +255,8 @@ def S32(val):
def zstr(s):
if not isinstance(s, unicode):
# This can only be the result of an internal error; call attention to
# it by raising ELSLInvalidType instead of ELSLTypeMismatch.
raise ELSLInvalidType
zi = s.find(u'\0')
@ -265,13 +267,13 @@ def zstr(s):
def fi(x):
"""Force x to be an int"""
if type(x) != int or not (-2147483648 <= x <= 2147483647):
raise ELSLInvalidType
raise ELSLTypeMismatch
return x
def ff(x):
"""Force x to be a float"""
if int != type(x) != float:
raise ELSLInvalidType
raise ELSLTypeMismatch
if type(x) != float:
return InternalTypecast(x, float, False, True)
return F32(x)
@ -279,7 +281,7 @@ def ff(x):
def fk(k):
"""Force k to be a key"""
if unicode != type(k) != Key:
raise ELSLInvalidType
raise ELSLTypeMismatch
if type(k) != Key:
k = InternalTypecast(k, Key, False, False)
return k
@ -287,7 +289,7 @@ def fk(k):
def fs(s):
"""Force s to be a string"""
if unicode != type(s) != Key:
raise ELSLInvalidType
raise ELSLTypeMismatch
if type(s) != unicode:
s = InternalTypecast(s, unicode, False, False)
return s
@ -296,7 +298,7 @@ def fl(L):
"""Force l to be a list, and its elements to have sane types."""
Lorig = L
if type(L) != list:
raise ELSLInvalidType
raise ELSLTypeMismatch
for i in xrange(len(L)):
t = type(L[i])
if t not in Types:
@ -315,14 +317,14 @@ def fl(L):
def q2f(q):
if type(q) != Quaternion:
raise ELSLInvalidType
raise ELSLTypeMismatch
if type(q[0]) == type(q[1]) == type(q[2]) == type(q[3]) == float:
return q
return Quaternion((ff(q[0]), ff(q[1]), ff(q[2]), ff(q[3])))
def v2f(v):
if type(v) != Vector:
raise ELSLInvalidType
raise ELSLTypeMismatch
if type(v[0]) == type(v[1]) == type(v[2]) == float:
return v
return Vector((ff(v[0]), ff(v[1]), ff(v[2])))
@ -1169,8 +1171,10 @@ def llGetListEntryType(lst, pos):
try:
return Types[type(lst[pos])]
except IndexError:
# list index out of bounds
return 0 # TYPE_INVALID
except KeyError:
# type of element not in Types
raise ELSLInvalidType
def llGetListLength(lst):