Fix (Parsing swf error: Failed to read past end of stream)

This commit is contained in:
2017-11-24 07:31:53 +07:00
parent 92645a0042
commit d4de173168
20 changed files with 138 additions and 23 deletions

View File

@@ -33,10 +33,13 @@ namespace FTSwfTools {
public SwfDisplayList Visit(PlaceObjectTag tag, SwfDisplayList dl) {
var is_shape = Library.HasDefine<SwfLibraryShapeDefine >(tag.CharacterId);
var is_bitmap = Library.HasDefine<SwfLibraryBitmapDefine>(tag.CharacterId);
var is_sprite = Library.HasDefine<SwfLibrarySpriteDefine>(tag.CharacterId);
SwfDisplayInstance new_inst = null;
if ( is_shape ) {
new_inst = new SwfDisplayShapeInstance();
} else if ( is_bitmap ) {
new_inst = new SwfDisplayBitmapInstance();
} else if ( is_sprite ) {
new_inst = new SwfDisplaySpriteInstance();
}
@@ -56,6 +59,7 @@ namespace FTSwfTools {
public SwfDisplayList Visit(PlaceObject2Tag tag, SwfDisplayList dl) {
var is_shape = tag.HasCharacter && Library.HasDefine<SwfLibraryShapeDefine >(tag.CharacterId);
var is_bitmap = tag.HasCharacter && Library.HasDefine<SwfLibraryBitmapDefine>(tag.CharacterId);
var is_sprite = tag.HasCharacter && Library.HasDefine<SwfLibrarySpriteDefine>(tag.CharacterId);
if ( tag.HasCharacter ) {
SwfDisplayInstance old_inst = null;
@@ -68,6 +72,8 @@ namespace FTSwfTools {
SwfDisplayInstance new_inst = null;
if ( is_shape ) {
new_inst = new SwfDisplayShapeInstance();
} else if ( is_bitmap ) {
new_inst = new SwfDisplayBitmapInstance();
} else if ( is_sprite ) {
new_inst = new SwfDisplaySpriteInstance();
}
@@ -101,6 +107,7 @@ namespace FTSwfTools {
public SwfDisplayList Visit(PlaceObject3Tag tag, SwfDisplayList dl) {
var is_shape = tag.HasCharacter && Library.HasDefine<SwfLibraryShapeDefine >(tag.CharacterId);
var is_bitmap = tag.HasCharacter && Library.HasDefine<SwfLibraryBitmapDefine>(tag.CharacterId);
var is_sprite = tag.HasCharacter && Library.HasDefine<SwfLibrarySpriteDefine>(tag.CharacterId);
if ( tag.HasCharacter ) {
SwfDisplayInstance old_inst = null;
@@ -113,6 +120,8 @@ namespace FTSwfTools {
SwfDisplayInstance new_inst = null;
if ( is_shape ) {
new_inst = new SwfDisplayShapeInstance();
} else if ( is_bitmap ) {
new_inst = new SwfDisplayBitmapInstance();
} else if ( is_sprite ) {
new_inst = new SwfDisplaySpriteInstance();
}