diff options
Diffstat (limited to 'youtube_dl')
| -rw-r--r-- | youtube_dl/swfinterp.py | 19 | 
1 files changed, 18 insertions, 1 deletions
diff --git a/youtube_dl/swfinterp.py b/youtube_dl/swfinterp.py index 58da6c586..85efde592 100644 --- a/youtube_dl/swfinterp.py +++ b/youtube_dl/swfinterp.py @@ -393,7 +393,10 @@ class SWFInterpreter(object):                  self._classes_by_name, avm_class.variables])              while True:                  opcode = _read_byte(coder) -                if opcode == 17:  # iftrue +                if opcode == 16:  # jump +                    offset = s24() +                    coder.seek(coder.tell() + offset) +                elif opcode == 17:  # iftrue                      offset = s24()                      value = stack.pop()                      if value: @@ -403,6 +406,20 @@ class SWFInterpreter(object):                      value = stack.pop()                      if not value:                          coder.seek(coder.tell() + offset) +                elif opcode == 19:  # ifeq +                    offset = s24() +                    value2 = stack.pop() +                    value1 = stack.pop() +                    if value2 == value1: +                        coder.seek(coder.tell() + offset) +                elif opcode == 20:  # ifne +                    offset = s24() +                    value2 = stack.pop() +                    value1 = stack.pop() +                    if value2 != value1: +                        coder.seek(coder.tell() + offset) +                elif opcode == 32:  # pushnull +                    stack.append(None)                  elif opcode == 36:  # pushbyte                      v = _read_byte(coder)                      stack.append(v)  | 
