From 911b61c72125aded38d6a72ab44b691e4011c7c4 Mon Sep 17 00:00:00 2001 From: yoya Date: Mon, 25 Oct 2010 16:59:09 +0000 Subject: [PATCH] =?utf8?q?swf=5Fshape=5Frecord=5Fsetup=5Fdelete=20?= =?utf8?q?=E3=82=92=E5=AE=9F=E8=A3=85=20swf=5Fshape=5Frecord=5Fdelete=20?= =?utf8?q?=E3=81=8B=E3=82=89=20swf=5Fshape=5Frecord=5Fsetup=5Fdelete=20?= =?utf8?q?=E3=82=92=E5=91=BC=E3=81=B6=E5=87=A6=E7=90=86=E3=82=92=E8=BF=BD?= =?utf8?q?=E5=8A=A0?= 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@294 7c90b180-03d5-4157-b861-58a559ae9d1e --- src/swf_shape_record.c | 15 +++++++++++++++ src/swf_shape_record_setup.c | 8 ++++++++ src/swf_shape_record_setup.h | 1 + 3 files changed, 24 insertions(+) diff --git a/src/swf_shape_record.c b/src/swf_shape_record.c index 46961b8..50b3373 100644 --- a/src/swf_shape_record.c +++ b/src/swf_shape_record.c @@ -106,8 +106,23 @@ swf_shape_record_print(swf_shape_record_t *shape_record, int indent_depth, int swf_shape_record_delete(swf_shape_record_t *shape_record) { swf_shape_record_t *current, *next; + int first_bit, next_5bits; + + first_bit = (shape_record->first_6bits >> 5) & 1; + next_5bits = shape_record->first_6bits & 0x1f; + + + if ((first_bit == 0) && (next_5bits != 0)) { + swf_shape_record_setup_delete(&(shape_record->shape.shape_setup)); + } + current = shape_record->next; while (current) { + first_bit = (current->first_6bits >> 5) & 1; + next_5bits = current->first_6bits & 0x1f; + if ((first_bit == 0) && (next_5bits != 0)) { + swf_shape_record_setup_delete(&(current->shape.shape_setup)); + } next = current->next; free(current); current = next; diff --git a/src/swf_shape_record_setup.c b/src/swf_shape_record_setup.c index 3f9d6ca..71b2cbf 100644 --- a/src/swf_shape_record_setup.c +++ b/src/swf_shape_record_setup.c @@ -124,3 +124,11 @@ swf_shape_record_setup_print(swf_shape_record_setup_t *shape_record_setup, return 0; } + +int +swf_shape_record_setup_delete(swf_shape_record_setup_t *setup) { + if (setup->shape_has_new_styles) { + swf_styles_delete(&(setup->styles)); + } + return 0; +} diff --git a/src/swf_shape_record_setup.h b/src/swf_shape_record_setup.h index afb0c57..e2d3173 100644 --- a/src/swf_shape_record_setup.h +++ b/src/swf_shape_record_setup.h @@ -34,5 +34,6 @@ extern int swf_shape_record_setup_build(bitstream_t *bs, swf_tag_t *tag); extern int swf_shape_record_setup_print(swf_shape_record_setup_t *setup, int indent_depth, swf_tag_t *tag); +extern int swf_shape_record_setup_delete(swf_shape_record_setup_t *setup); #endif /* __SWF_SHAPE_RECORD_SETUP_H__ */ -- 2.11.0