X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=youtube_dl%2Fswfinterp.py;fp=youtube_dl%2Fswfinterp.py;h=85efde5924cddb12988260510da68a296f4241b0;hb=e983cf52775e493b7deedbe48d2f50f598c9da4e;hp=58da6c586ffd863d054626a638724f5781545320;hpb=0ab1ca5501108b8038090750e8455bfb5d72c443;p=youtube-dl 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)