From c93586e419e41272b04b4791572605c1cc9e1026 Mon Sep 17 00:00:00 2001 From: yoya Date: Tue, 5 Apr 2011 12:17:08 +0000 Subject: [PATCH] =?utf8?q?swf=5Ftag=5Fsprite=5Fdetail=20=E6=A7=8B=E7=AF=89?= =?utf8?q?=E5=87=A6=E7=90=86=E3=81=AE=20refine=20=E3=81=A8=20->prev=20?= =?utf8?q?=E5=AF=BE=E5=BF=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit git-svn-id: svn+ssh://svn.sourceforge.jp/svnroot/swfed/trunk@519 7c90b180-03d5-4157-b861-58a559ae9d1e --- src/swf_tag_sprite.c | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/src/swf_tag_sprite.c b/src/swf_tag_sprite.c index 7beef7a..d489ad3 100644 --- a/src/swf_tag_sprite.c +++ b/src/swf_tag_sprite.c @@ -41,7 +41,7 @@ swf_tag_sprite_input_detail(swf_tag_t *tag, struct swf_object_ *swf) { unsigned char *data = tag->data; unsigned long length = tag->length; bitstream_t *bs; - swf_tag_t **_tag; + swf_tag_t *tag_in_sprite, *prev_tag; (void) swf; if (swf_tag_sprite == NULL) { fprintf(stderr, "ERROR: swf_tag_sprite_input_detail: swf_tag_sprite == NULL\n"); @@ -52,18 +52,29 @@ swf_tag_sprite_input_detail(swf_tag_t *tag, struct swf_object_ *swf) { swf_tag_sprite->sprite_id = bitstream_getbytesLE(bs, 2); swf_tag_sprite->frame_count = bitstream_getbytesLE(bs, 2); // - _tag = &swf_tag_sprite->tag; + + prev_tag = NULL; while(1) { long pos; pos = bitstream_getbytepos(bs); if ((pos == -1) || ((long) length <= pos)) { break; } - *_tag = swf_tag_create(bs); - if (_tag == NULL) { + tag_in_sprite = swf_tag_create(bs); + if (tag_in_sprite == NULL) { fprintf(stderr, "swf_object_input: swf_tag_create failed\n"); + break; + } + if (prev_tag == NULL) { + swf_tag_sprite->tag = tag_in_sprite; + tag_in_sprite->prev = NULL; + tag_in_sprite->next = NULL; + } else { + prev_tag->next = tag_in_sprite; + tag_in_sprite->prev = prev_tag; + tag_in_sprite->next = NULL; } - _tag = &((*_tag)->next); + prev_tag = tag_in_sprite; } bitstream_close(bs); return 0; -- 2.11.0