From d982bdf4163c2e438cf2b3c362c246817e4cd14f Mon Sep 17 00:00:00 2001 From: Yoshihiro Yamazaki Date: Thu, 22 Nov 2012 02:36:11 +0900 Subject: [PATCH] tag parser --- loader.js | 33 +++++++++++++++++---------------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/loader.js b/loader.js index 6ae2c10..ee19d38 100644 --- a/loader.js +++ b/loader.js @@ -31,26 +31,27 @@ if (this.header === null) { this.header = FlappSWFHeader.load(ibit); this.flapp.header = this.header; + console.debug(this.header); } - headPos = ibit.getBytePos(); - if (ibit.hasNext(2) === false) { - return ; - } - tal = ibit.ui16(); // tag and length - code = tal >>> 6; - length = tal & 0x3f; - if (length === 0x3f) { - if (ibit.hasNext(4) === false) { + while (ibit.a(), ibit.hasNext(2)) { + var headPos = ibit.getBytePos(); + var tag_and_length = ibit.ui16(); // tag and length + var code = tag_and_length >>> 6; + var length = tag_and_length & 0x3f; + if (length === 0x3f) { + if (ibit.hasNext(4) === false) { + ibit.setPos(headPos); + break; + } + length = ibit.ui32(); + } + if (ibit.hasNext(length) === false) { ibit.setPos(headPos); - return ; + break; } - length = ibit.ui32(); - } - if (ibit.hasNext(length) === false) { - ibit.setPos(headPos); - return ; + var content = ibit.sub(length); + console.log("swf tag code:"+code+" length:"+length); } - console.log("swf tag code:"+code+" length:"+length); } }; global.FlappLoader = FlappLoader; -- 2.11.0