Benjamin Otte
2008-Jan-10 12:37 UTC
[Swfdec] 8 commits - libswfdec/swfdec_as_date.c libswfdec/swfdec_as_object.c libswfdec/swfdec_as_types.c libswfdec/swfdec_bits.c libswfdec/swfdec_codec_gst.c libswfdec/swfdec_text_field_movie_html.c test/trace
libswfdec/swfdec_as_date.c | 47 +++---- libswfdec/swfdec_as_object.c | 4 libswfdec/swfdec_as_types.c | 190 +++++++++++++++---------------- libswfdec/swfdec_bits.c | 2 libswfdec/swfdec_codec_gst.c | 13 +- libswfdec/swfdec_text_field_movie_html.c | 2 test/trace/Makefile.am | 2 test/trace/default.as | 49 ------- test/trace/default.stas | 49 +++++++ 9 files changed, 178 insertions(+), 180 deletions(-) New commits: commit 07c006a9785a5043c0a0a4b8d78b28c0735020c4 Author: Valery Masiutsin <val.masutin at gmail.com> Date: Thu Jan 10 12:41:15 2008 +0100 this variable can be used uninitialized diff --git a/libswfdec/swfdec_text_field_movie_html.c b/libswfdec/swfdec_text_field_movie_html.c index 0fc6897..b0aa94f 100644 --- a/libswfdec/swfdec_text_field_movie_html.c +++ b/libswfdec/swfdec_text_field_movie_html.c @@ -542,7 +542,7 @@ swfdec_text_field_movie_html_text_append_paragraph (SwfdecTextFieldMovie *text, SwfdecTextFormat *format, *format_prev, *format_font; GSList *iter, *fonts, *iter_font; guint index_, index_prev; - gboolean textformat, bullet, font; + gboolean textformat, bullet, font = FALSE; char *escaped; g_return_val_if_fail (SWFDEC_IS_TEXT_FIELD_MOVIE (text), string); commit bfaa75ec99c1b7dea4168811a97ef2071c5313bb Author: Benjamin Otte <otte at gnome.org> Date: Thu Jan 10 12:38:29 2008 +0100 s/ALIGN/SWFDEC_ALIGN/ apparently some weird headers have an ALIGN macro hidden somewhere diff --git a/libswfdec/swfdec_codec_gst.c b/libswfdec/swfdec_codec_gst.c index 22c5638..2167050 100644 --- a/libswfdec/swfdec_codec_gst.c +++ b/libswfdec/swfdec_codec_gst.c @@ -492,7 +492,7 @@ swfdec_video_decoder_gst_decode (SwfdecVideoDecoder *dec, SwfdecBuffer *buffer, SwfdecVideoImage *image) { SwfdecGstVideo *player = (SwfdecGstVideo *) dec; -#define ALIGN(x, n) (((x) + (n) - 1) & (~((n) - 1))) +#define SWFDEC_ALIGN(x, n) (((x) + (n) - 1) & (~((n) - 1))) GstBuffer *buf; GstCaps *caps; GstStructure *structure; @@ -542,17 +542,18 @@ swfdec_video_decoder_gst_decode (SwfdecVideoDecoder *dec, SwfdecBuffer *buffer, break; case SWFDEC_VIDEO_FORMAT_I420: image->plane[0] = buf->data; - image->rowstride[0] = ALIGN (image->width, 4); - image->plane[1] = image->plane[0] + image->rowstride[0] * ALIGN (image->height, 2); - image->rowstride[1] = ALIGN (image->width, 8) / 2; - image->plane[2] = image->plane[1] + image->rowstride[1] * ALIGN (image->height, 2) / 2; + image->rowstride[0] = SWFDEC_ALIGN (image->width, 4); + image->plane[1] = image->plane[0] + image->rowstride[0] * SWFDEC_ALIGN (image->height, 2); + image->rowstride[1] = SWFDEC_ALIGN (image->width, 8) / 2; + image->plane[2] = image->plane[1] + image->rowstride[1] * SWFDEC_ALIGN (image->height, 2) / 2; image->rowstride[2] = image->rowstride[1]; - g_assert (image->plane[2] + image->rowstride[2] * ALIGN (image->height, 2) / 2 == image->plane[0] + buf->size); + g_assert (image->plane[2] + image->rowstride[2] * SWFDEC_ALIGN (image->height, 2) / 2 == image->plane[0] + buf->size); break; default: g_return_val_if_reached (FALSE); } return TRUE; +#undef SWFDEC_ALIGN } static GstCaps * commit 433e3503b0eb38246ba068ec0699944cc1d62ba0 Author: Benjamin Otte <otte at gnome.org> Date: Thu Jan 10 12:33:52 2008 +0100 cast the types in correctly debug message diff --git a/libswfdec/swfdec_bits.c b/libswfdec/swfdec_bits.c index 4faaa0b..1cf166d 100644 --- a/libswfdec/swfdec_bits.c +++ b/libswfdec/swfdec_bits.c @@ -743,7 +743,7 @@ out: } else { if (buffer->length < z.total_out) { SWFDEC_WARNING ("Not enough data decompressed: %lu instead of %"G_GSIZE_FORMAT" expected", - z.total_out, buffer->length); + (gulong) z.total_out, buffer->length); memset (buffer->data + z.total_out, 0, buffer->length - z.total_out); } } commit af566c89e2fbefe9b61dcfb088cda66edbe09958 Author: Benjamin Otte <otte at gnome.org> Date: Thu Jan 10 12:32:23 2008 +0100 silence old gcc versions diff --git a/libswfdec/swfdec_as_object.c b/libswfdec/swfdec_as_object.c index b9c7a13..a5af75d 100644 --- a/libswfdec/swfdec_as_object.c +++ b/libswfdec/swfdec_as_object.c @@ -1298,7 +1298,7 @@ swfdec_as_object_create (SwfdecAsFunction *fun, guint n_args, SwfdecAsContext *context; SwfdecAsFunction *cur; SwfdecAsFrame *frame; - guint size; + guint size = 0; GType type = 0; g_return_if_fail (SWFDEC_IS_AS_FUNCTION (fun)); commit 616c94fc0b584d3c359bc09e29be381f8f43e4ab Author: Benjamin Otte <otte at gnome.org> Date: Thu Jan 10 12:24:48 2008 +0100 get rid of fpclassify() Should make porting easier. diff --git a/libswfdec/swfdec_as_types.c b/libswfdec/swfdec_as_types.c index 8e87a6b..420d094 100644 --- a/libswfdec/swfdec_as_types.c +++ b/libswfdec/swfdec_as_types.c @@ -248,105 +248,103 @@ swfdec_as_integer_to_string (SwfdecAsContext *context, int i) const char * swfdec_as_double_to_string (SwfdecAsContext *context, double d) { + gboolean found = FALSE, gotdot = FALSE; + guint digits = 15; + char tmp[50], *end, *start, *s; + g_return_val_if_fail (SWFDEC_IS_AS_CONTEXT (context), SWFDEC_AS_STR_EMPTY); - switch (fpclassify (d)) { - case FP_ZERO: - return SWFDEC_AS_STR_0; - case FP_INFINITE: - return d < 0 ? SWFDEC_AS_STR__Infinity : SWFDEC_AS_STR_Infinity; - case FP_NAN: - return SWFDEC_AS_STR_NaN; - default: - { - gboolean found = FALSE, gotdot = FALSE; - guint digits = 15; - char tmp[50], *end, *start, *s; - tmp[0] = ' '; - s = &tmp[1]; - if (ABS (d) > 0.00001 && ABS (d) < 1e+15) { - g_ascii_formatd (s, 50, "%.22f", d); - } else { - g_ascii_formatd (s, 50, "%.25e", d); - } - start = s; - /* skip - sign */ - if (*start == '-') - start++; - /* count digits (maximum allowed is 15) */ - while (digits) { - if (*start == '.') { - start++; - gotdot = TRUE; - continue; - } - if (*start < '0' || *start > '9') - break; - if (found || *start != '0') { - digits--; - found = TRUE; - } - start++; - } - end = start; - /* go to end of string */ - while (*end != 'e' && *end != 0) - end++; - /* round using the next digit */ - if (*start >= '5' && *start <= '9') { - char *finish = NULL; - /* skip all 9s at the end */ - while (start[-1] == '9') - start--; - /* if we're before the dot, replace 9s with 0s */ - if (start[-1] == '.') { - finish = start; - start--; - } - while (start[-1] == '9') { - start[-1] = '0'; - start--; - } - /* write out correct number */ - if (start[-1] == '-') { - s--; - start[-2] = '-'; - start[-1] = '1'; - } else if (start[-1] == ' ') { - s--; - start[-1] = '1'; - } else { - start[-1]++; - } - /* reposition cursor at end */ - if (finish) - start = finish; - } - /* remove trailing zeros (note we skipped zero above, so there will be non-0 bytes left) */ - if (gotdot) { - while (start[-1] == '0') - start--; - if (start[-1] == '.') - start--; - } - /* add exponent */ - if (*end == 'e') { - /* 'e' */ - *start++ = *end++; - /* + or - */ - *start++ = *end++; - /* skip 0s */ - while (*end == '0') - end++; - /* add rest */ - while (*end != 0) - *start++ = *end++; - } - /* end string */ - *start = 0; - return swfdec_as_context_get_string (context, s); - } + if (isnan (d)) + return SWFDEC_AS_STR_NaN; + if (!isinf (d)) + return d < 0 ? SWFDEC_AS_STR__Infinity : SWFDEC_AS_STR_Infinity; + /* stupid -0.0 */ + if (fabs (d) == 0.0) + return SWFDEC_AS_STR_0; + + tmp[0] = ' '; + s = &tmp[1]; + if (ABS (d) > 0.00001 && ABS (d) < 1e+15) { + g_ascii_formatd (s, 50, "%.22f", d); + } else { + g_ascii_formatd (s, 50, "%.25e", d); + } + start = s; + /* skip - sign */ + if (*start == '-') + start++; + /* count digits (maximum allowed is 15) */ + while (digits) { + if (*start == '.') { + start++; + gotdot = TRUE; + continue; + } + if (*start < '0' || *start > '9') + break; + if (found || *start != '0') { + digits--; + found = TRUE; + } + start++; + } + end = start; + /* go to end of string */ + while (*end != 'e' && *end != 0) + end++; + /* round using the next digit */ + if (*start >= '5' && *start <= '9') { + char *finish = NULL; + /* skip all 9s at the end */ + while (start[-1] == '9') + start--; + /* if we're before the dot, replace 9s with 0s */ + if (start[-1] == '.') { + finish = start; + start--; + } + while (start[-1] == '9') { + start[-1] = '0'; + start--; + } + /* write out correct number */ + if (start[-1] == '-') { + s--; + start[-2] = '-'; + start[-1] = '1'; + } else if (start[-1] == ' ') { + s--; + start[-1] = '1'; + } else { + start[-1]++; + } + /* reposition cursor at end */ + if (finish) + start = finish; + } + /* remove trailing zeros (note we skipped zero above, so there will be non-0 bytes left) */ + if (gotdot) { + while (start[-1] == '0') + start--; + if (start[-1] == '.') + start--; + } + /* add exponent */ + if (*end == 'e') { + /* 'e' */ + *start++ = *end++; + /* + or - */ + *start++ = *end++; + /* skip 0s */ + while (*end == '0') + end++; + /* add rest */ + while (*end != 0) + *start++ = *end++; } + /* end string */ + *start = 0; + return swfdec_as_context_get_string (context, s); } /** commit 135358d039b3f6e1f79809aab42defffa009c9fb Author: Benjamin Otte <otte at gnome.org> Date: Thu Jan 10 12:06:27 2008 +0100 make this function more readable and hopefully fix OpenBSD complaints diff --git a/libswfdec/swfdec_as_date.c b/libswfdec/swfdec_as_date.c index 648b50f..890d274 100644 --- a/libswfdec/swfdec_as_date.c +++ b/libswfdec/swfdec_as_date.c @@ -918,37 +918,34 @@ swfdec_as_date_UTC (SwfdecAsContext *cx, SwfdecAsObject *object, guint argc, memset (&brokentime, 0, sizeof (brokentime)); - i = 0; - - if (argc > i) { - if (swfdec_as_date_value_to_number_and_integer_floor (cx, &argv[i++], &d, + if (argc > 0) { + if (swfdec_as_date_value_to_number_and_integer_floor (cx, &argv[0], &d, &num)) { year = num; } else { // special case: if year is not finite set it to -1900 year = -1900; } + } else { + return; } // if we don't got atleast two values, return undefined // do it only here, so valueOf first arg is called - if (argc < 2) { + if (argc < 2) return; - } - if (argc > i) { - if (swfdec_as_date_value_to_number_and_integer (cx, &argv[i++], &d, - &num)) { - brokentime.month = num; - } else { - // special case: if month is not finite set year to -1900 - year = -1900; - brokentime.month = 0; - } + if (swfdec_as_date_value_to_number_and_integer (cx, &argv[1], &d, + &num)) { + brokentime.month = num; + } else { + // special case: if month is not finite set year to -1900 + year = -1900; + brokentime.month = 0; } - if (argc > i) { - if (swfdec_as_date_value_to_number_and_integer (cx, &argv[i++], &d, + if (argc > 2) { + if (swfdec_as_date_value_to_number_and_integer (cx, &argv[2], &d, &num)) { brokentime.day_of_month = num; } else { @@ -959,8 +956,8 @@ swfdec_as_date_UTC (SwfdecAsContext *cx, SwfdecAsObject *object, guint argc, brokentime.day_of_month = 1; } - if (argc > i) { - if (swfdec_as_date_value_to_number_and_integer (cx, &argv[i++], &d, + if (argc > 3) { + if (swfdec_as_date_value_to_number_and_integer (cx, &argv[3], &d, &num)) { brokentime.hours = num; } else { @@ -969,8 +966,8 @@ swfdec_as_date_UTC (SwfdecAsContext *cx, SwfdecAsObject *object, guint argc, } } - if (argc > i) { - if (swfdec_as_date_value_to_number_and_integer (cx, &argv[i++], &d, + if (argc > 4) { + if (swfdec_as_date_value_to_number_and_integer (cx, &argv[4], &d, &num)) { brokentime.minutes = num; } else { @@ -979,8 +976,8 @@ swfdec_as_date_UTC (SwfdecAsContext *cx, SwfdecAsObject *object, guint argc, } } - if (argc > i) { - if (swfdec_as_date_value_to_number_and_integer (cx, &argv[i++], &d, + if (argc > 5) { + if (swfdec_as_date_value_to_number_and_integer (cx, &argv[5], &d, &num)) { brokentime.seconds = num; } else { @@ -995,8 +992,8 @@ swfdec_as_date_UTC (SwfdecAsContext *cx, SwfdecAsObject *object, guint argc, brokentime.year = year; } - if (argc > i) { - if (swfdec_as_date_value_to_number_and_integer (cx, &argv[i++], &d, + if (argc > 6) { + if (swfdec_as_date_value_to_number_and_integer (cx, &argv[6], &d, &num)) { brokentime.milliseconds = num; } else { commit 3d93cb3797729c70119069f54f74794a71103f55 Author: Benjamin Otte <otte at gnome.org> Date: Wed Jan 9 23:48:10 2008 +0100 typo diff --git a/libswfdec/swfdec_as_object.c b/libswfdec/swfdec_as_object.c index b3c220a..b9c7a13 100644 --- a/libswfdec/swfdec_as_object.c +++ b/libswfdec/swfdec_as_object.c @@ -101,7 +101,7 @@ * @variable: garbage-collected name of the current variables * @value: value of the current variable * @flags: Flags associated with the current variable - * @data: User dta passed to swfdec_as_object_foreach() + * @data: User data passed to swfdec_as_object_foreach() * * Function prototype for the swfdec_as_object_foreach() function. * commit 55c0e70445d7f4968e37cac2ff7a987f3608190e Author: Benjamin Otte <otte at gnome.org> Date: Wed Jan 9 12:55:47 2008 +0100 rename default.as to default.stas and include it in EXTRA_DIST diff --git a/test/trace/Makefile.am b/test/trace/Makefile.am index 45ed833..f73c024 100644 --- a/test/trace/Makefile.am +++ b/test/trace/Makefile.am @@ -702,6 +702,8 @@ EXTRA_DIST = \ date-properties-7.swf.trace \ date-properties-8.swf \ date-properties-8.swf.trace \ + default.stas \ + default.sts definebutton-5.swf \ definebutton-5.swf.act \ definebutton-5.swf.trace \ diff --git a/test/trace/default.as b/test/trace/default.as deleted file mode 100644 index 3f31797..0000000 --- a/test/trace/default.as +++ /dev/null @@ -1,49 +0,0 @@ -/* Swfdec - * Copyright (C) 2008 Benjamin Otte <otte at gnome.org> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110-1301 USA - */ - -run_test = function (t, file) { - var e; - print ("Testing " + file); - try { - t.reset (file); - t.trace (file + ".trace"); - t.advance (0); - t.advance (Math.ceil (10000 / t.rate)); - t.trace (); - } catch (e) { - if (e) { - error (e); - return false; - } - }; - Native.print (" OK\n"); - return true; -}; - -filenames.sort (); -t = new Test (); -fail = []; -for (var i = 0; i < filenames.length; i++) { - if (!run_test (t, filenames[i])) - fail.push (filenames[i]); -}; -if (fail.length > 0) { - error (fail.join ("\n ")); - throw (fail.length + " failures"); -} diff --git a/test/trace/default.stas b/test/trace/default.stas new file mode 100644 index 0000000..3f31797 --- /dev/null +++ b/test/trace/default.stas @@ -0,0 +1,49 @@ +/* Swfdec + * Copyright (C) 2008 Benjamin Otte <otte at gnome.org> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301 USA + */ + +run_test = function (t, file) { + var e; + print ("Testing " + file); + try { + t.reset (file); + t.trace (file + ".trace"); + t.advance (0); + t.advance (Math.ceil (10000 / t.rate)); + t.trace (); + } catch (e) { + if (e) { + error (e); + return false; + } + }; + Native.print (" OK\n"); + return true; +}; + +filenames.sort (); +t = new Test (); +fail = []; +for (var i = 0; i < filenames.length; i++) { + if (!run_test (t, filenames[i])) + fail.push (filenames[i]); +}; +if (fail.length > 0) { + error (fail.join ("\n ")); + throw (fail.length + " failures"); +}
Reasonably Related Threads
- 3 commits - libswfdec/swfdec_as_date.c libswfdec/swfdec_as_interpret.c libswfdec/swfdec_movie.c libswfdec/swfdec_movie.h libswfdec/swfdec_sprite_movie.c
- OpenBSD related patches
- 7 commits - libswfdec/swfdec_text_field_movie.c libswfdec/swfdec_text_field_movie.h libswfdec/swfdec_text_field_movie_html.c
- 4 commits - libswfdec/swfdec_codec_audio.c libswfdec/swfdec_codec_gst.c libswfdec/swfdec_codec_video.c libswfdec/swfdec_sound.c
- configure.ac libswfdec-gtk/swfdec_gtk_widget.c libswfdec-gtk/swfdec_playback_alsa.c libswfdec/swfdec_as_date.c libswfdec/swfdec_as_interpret.c libswfdec/swfdec_as_types.c libswfdec/swfdec_audio_flv.c libswfdec/swfdec_audio_flv.h