return res
+StringClass = _AVMClass('(no name idx)', 'String')
+
+
class SWFInterpreter(object):
def __init__(self, file_contents):
self._patched_functions = {}
res = args[0].join(obj)
stack.append(res)
continue
+ elif obj == StringClass:
+ if mname == 'String':
+ assert len(args) == 1
+ assert isinstance(args[0], (int, compat_str))
+ res = compat_str(args[0])
+ stack.append(res)
+ continue
+ else:
+ raise NotImplementedError(
+ 'Function String.%s is not yet implemented'
+ % mname)
raise NotImplementedError(
'Unsupported property %r on %r'
% (mname, obj))
break
else:
res = scopes[0]
- stack.append(res[mname])
+ if mname not in res and mname == 'String':
+ stack.append(StringClass)
+ else:
+ stack.append(res[mname])
elif opcode == 94: # findproperty
index = u30()
mname = self.multinames[index]
pname = self.multinames[index]
if pname == 'length':
obj = stack.pop()
- assert isinstance(obj, list)
+ assert isinstance(obj, (compat_str, list))
stack.append(len(obj))
elif isinstance(pname, compat_str): # Member access
obj = stack.pop()