Pekka Lampila
2007-Oct-19 11:04 UTC
[Swfdec] 3 commits - libswfdec/swfdec_as_interpret.c libswfdec/swfdec_html_parser.c libswfdec/swfdec_sprite_movie_as.c libswfdec/swfdec_text_field_movie.c
libswfdec/swfdec_as_interpret.c | 2 +- libswfdec/swfdec_html_parser.c | 9 +++------ libswfdec/swfdec_sprite_movie_as.c | 4 ++-- libswfdec/swfdec_text_field_movie.c | 12 ++++++------ 4 files changed, 12 insertions(+), 15 deletions(-) New commits: commit bf55dadb198606ae4b5e22929f79bbd8b6e3db63 Author: Pekka Lampila <pekka.lampila at iki.fi> Date: Fri Oct 19 14:04:14 2007 +0300 Don't crash in couple of places when resource != NULL and decoder == NULL Hopefully this is the right fix diff --git a/libswfdec/swfdec_as_interpret.c b/libswfdec/swfdec_as_interpret.c index b608f31..4f8130c 100644 --- a/libswfdec/swfdec_as_interpret.c +++ b/libswfdec/swfdec_as_interpret.c @@ -285,7 +285,7 @@ swfdec_action_wait_for_frame (SwfdecAsContext *cx, guint action, const guint8 *d frame = data[0] || (data[1] << 8); jump = data[2]; resource = swfdec_movie_get_own_resource (movie); - if (resource) { + if (resource && resource->decoder) { SwfdecDecoder *dec = resource->decoder; loaded = dec->frames_loaded; if (loaded == dec->frames_total) diff --git a/libswfdec/swfdec_sprite_movie_as.c b/libswfdec/swfdec_sprite_movie_as.c index 00e9be2..301f2c0 100644 --- a/libswfdec/swfdec_sprite_movie_as.c +++ b/libswfdec/swfdec_sprite_movie_as.c @@ -72,7 +72,7 @@ swfdec_sprite_movie_getBytesLoaded (SwfdecAsContext *cx, SwfdecAsObject *object, SWFDEC_AS_CHECK (SWFDEC_TYPE_MOVIE, (gpointer)&movie, ""); resource = swfdec_movie_get_own_resource (movie); - if (resource) { + if (resource && resource->decoder) { SWFDEC_AS_VALUE_SET_INT (rval, resource->decoder->bytes_loaded); } else { SWFDEC_AS_VALUE_SET_INT (rval, 0); @@ -90,7 +90,7 @@ swfdec_sprite_movie_getBytesTotal (SwfdecAsContext *cx, SwfdecAsObject *object, SWFDEC_AS_CHECK (SWFDEC_TYPE_MOVIE, (gpointer)&movie, ""); resource = swfdec_movie_get_own_resource (movie); - if (resource) { + if (resource && resource->decoder) { SWFDEC_AS_VALUE_SET_INT (rval, resource->decoder->bytes_total); } else { SWFDEC_AS_VALUE_SET_INT (rval, 0); commit 60570600ac9407169e371f4186108f348e4c4ffe Author: Pekka Lampila <pekka.lampila at iki.fi> Date: Fri Oct 19 13:39:17 2007 +0300 TextField's HTML parsing: Include the added \r in to the created text format diff --git a/libswfdec/swfdec_html_parser.c b/libswfdec/swfdec_html_parser.c index 47cd412..5d058df 100644 --- a/libswfdec/swfdec_html_parser.c +++ b/libswfdec/swfdec_html_parser.c @@ -246,8 +246,6 @@ swfdec_text_field_movie_html_parse_tag (ParserData *data, const char *p) if (tag != NULL && name_length == tag->name_length && !g_strncasecmp (name, tag->name, name_length)) { - tag->end_index = data->text->len; - if (data->cx->version == 6) { if ((name_length == 1 && !g_strncasecmp (name, "p", 1)) || (name_length == 2 && !g_strncasecmp (name, "li", 2))) { @@ -255,6 +253,8 @@ swfdec_text_field_movie_html_parse_tag (ParserData *data, const char *p) } } + tag->end_index = data->text->len; + data->tags_open = g_slist_remove (data->tags_open, tag); data->tags_closed = g_slist_prepend (data->tags_closed, tag); } commit 0e9a542dee29e14e3bc4c26ffcb4711c6dec4090 Author: Pekka Lampila <pekka.lampila at iki.fi> Date: Fri Oct 19 12:23:46 2007 +0300 Don't parse kerning in TextField's html input. Fix font closing tag's position diff --git a/libswfdec/swfdec_html_parser.c b/libswfdec/swfdec_html_parser.c index cba7aa7..47cd412 100644 --- a/libswfdec/swfdec_html_parser.c +++ b/libswfdec/swfdec_html_parser.c @@ -136,10 +136,7 @@ swfdec_text_field_movie_html_tag_set_attribute (ParserTag *tag, swfdec_as_object_set_variable (object, SWFDEC_AS_STR_letterSpacing, &val); } - else if (name_length == 7 && !g_strncasecmp (name, "kerning", 7)) - { - swfdec_as_object_set_variable (object, SWFDEC_AS_STR_kerning, &val); - } + // special case: Don't parse kerning } else if (tag->name_length == 1 && !g_strncasecmp (tag->name, "a", 1)) { diff --git a/libswfdec/swfdec_text_field_movie.c b/libswfdec/swfdec_text_field_movie.c index 4272c7c..737357b 100644 --- a/libswfdec/swfdec_text_field_movie.c +++ b/libswfdec/swfdec_text_field_movie.c @@ -1352,12 +1352,6 @@ swfdec_text_field_movie_html_text_append_paragraph (SwfdecTextFieldMovie *text, break; } } - if (iter_font != NULL) { - while (fonts != iter_font) { - string = g_string_append (string, "</FONT>"); - fonts = g_slist_remove (fonts, fonts->data); - } - } if (format_prev->underline) string = g_string_append (string, "</U>"); if (format_prev->italic) @@ -1366,6 +1360,12 @@ swfdec_text_field_movie_html_text_append_paragraph (SwfdecTextFieldMovie *text, string = g_string_append (string, "</B>"); if (format_prev->url != SWFDEC_AS_STR_EMPTY) string = g_string_append (string, "</A>"); + if (iter_font != NULL) { + while (fonts != iter_font) { + string = g_string_append (string, "</FONT>"); + fonts = g_slist_remove (fonts, fonts->data); + } + } // Open tags format_font = (SwfdecTextFormat *)fonts->data;
Reasonably Related Threads
- 3 commits - libswfdec/swfdec_html_parser.c libswfdec/swfdec_text_field_movie.c
- 20 commits - libswfdec/Makefile.am libswfdec/swfdec_as_interpret.c libswfdec/swfdec_html_parser.c libswfdec/swfdec_initialize.as libswfdec/swfdec_initialize.h libswfdec/swfdec_text_field.c libswfdec/swfdec_text_field.h
- 9 commits - libswfdec/swfdec_as_strings.c libswfdec/swfdec_html_parser.c libswfdec/swfdec_style_sheet.c libswfdec/swfdec_style_sheet.h libswfdec/swfdec_text_field_movie_as.c libswfdec/swfdec_text_field_movie.c libswfdec/swfdec_text_field_movie.h
- 6 commits - libswfdec/swfdec_as_strings.c libswfdec/swfdec_movie.c libswfdec/swfdec_movie.h libswfdec/swfdec_text_field.c libswfdec/swfdec_text_field.h libswfdec/swfdec_text_field_movie_as.c libswfdec/swfdec_text_field_movie.c
- 5 commits - libswfdec/swfdec_html_parser.c libswfdec/swfdec_text_field.c libswfdec/swfdec_text_field_movie_as.c libswfdec/swfdec_text_field_movie.c libswfdec/swfdec_xml.c test/trace