[Swfdec-commits] 3 commits - swfdec/swfdec_actor.c swfdec/swfdec_as_interpret.c swfdec/swfdec_as_movie_value.c swfdec/swfdec_as_object.c swfdec/swfdec_movie_asprops.c swfdec/swfdec_movie.c swfdec/swfdec_movie.h swfdec/swfdec_player.c swfdec/swfdec_resource.c swfdec/swfdec_sprite_movie_as.c swfdec/swfdec_sprite_movie.c test/trace vivified/ui

Benjamin Otte company at kemper.freedesktop.org
Mon Nov 3 07:48:18 PST 2008


 swfdec/swfdec_actor.c                       |    2 
 swfdec/swfdec_as_interpret.c                |    4 
 swfdec/swfdec_as_movie_value.c              |    4 
 swfdec/swfdec_as_object.c                   |    4 
 swfdec/swfdec_movie.c                       |   38 +-
 swfdec/swfdec_movie.h                       |    2 
 swfdec/swfdec_movie_asprops.c               |    6 
 swfdec/swfdec_player.c                      |   10 
 swfdec/swfdec_resource.c                    |    2 
 swfdec/swfdec_sprite_movie.c                |    6 
 swfdec/swfdec_sprite_movie_as.c             |    6 
 test/trace/Makefile.am                      |   18 +
 test/trace/conversion-functions-5.swf       |binary
 test/trace/conversion-functions-5.swf.trace |  446 +++++++++++++++++++++++++++
 test/trace/conversion-functions-6.swf       |binary
 test/trace/conversion-functions-6.swf.trace |  448 ++++++++++++++++++++++++++++
 test/trace/conversion-functions-7.swf       |binary
 test/trace/conversion-functions-7.swf.trace |  448 ++++++++++++++++++++++++++++
 test/trace/conversion-functions-8.swf       |binary
 test/trace/conversion-functions-8.swf.trace |  448 ++++++++++++++++++++++++++++
 test/trace/conversion-functions.as          |   17 +
 test/trace/various-tests-5.swf              |binary
 test/trace/various-tests-5.swf.trace        |   22 +
 test/trace/various-tests-6.swf              |binary
 test/trace/various-tests-6.swf.trace        |   25 +
 test/trace/various-tests-7.swf              |binary
 test/trace/various-tests-7.swf.trace        |   25 +
 test/trace/various-tests-8.swf              |binary
 test/trace/various-tests-8.swf.trace        |   25 +
 test/trace/various-tests.as                 |  117 +++++++
 vivified/ui/vivi_movie_list.c               |    2 
 31 files changed, 2082 insertions(+), 43 deletions(-)

New commits:
commit 35fc7a031b4c61fb5216b43d987f1b193a6dc937
Author: Benjamin Otte <otte at gnome.org>
Date:   Mon Nov 3 16:46:37 2008 +0100

    name name variable correctly again
    
    The previous name was to cause compiler erros, so I'd catch all cases
    where it was used. It changed semantics slightly after all.

diff --git a/swfdec/swfdec_actor.c b/swfdec/swfdec_actor.c
index 27c1628..a35b7bf 100644
--- a/swfdec/swfdec_actor.c
+++ b/swfdec/swfdec_actor.c
@@ -304,7 +304,7 @@ swfdec_actor_queue_script_with_key (SwfdecActor *actor,
     return;
   /* can happen for mouse/keyboard events on the initial movie */
   if (SWFDEC_MOVIE (actor)->resource->sandbox == NULL) {
-    SWFDEC_INFO ("movie %s not yet initialized, skipping event", SWFDEC_MOVIE (actor)->nameasdf);
+    SWFDEC_INFO ("movie %s not yet initialized, skipping event", SWFDEC_MOVIE (actor)->name);
     return;
   }
 
diff --git a/swfdec/swfdec_as_interpret.c b/swfdec/swfdec_as_interpret.c
index 41bf69b..6ae6384 100644
--- a/swfdec/swfdec_as_interpret.c
+++ b/swfdec/swfdec_as_interpret.c
@@ -2770,7 +2770,7 @@ swfdec_action_remove_sprite (SwfdecAsContext *cx, guint action, const guint8 *da
     SwfdecMovie *movie = swfdec_player_get_movie_from_value (SWFDEC_PLAYER (cx),
 	swfdec_as_stack_peek (cx, 1));
     if (movie && swfdec_depth_classify (movie->depth) == SWFDEC_DEPTH_CLASS_DYNAMIC) {
-      SWFDEC_LOG ("removing clip %s", movie->nameasdf);
+      SWFDEC_LOG ("removing clip %s", movie->name);
       swfdec_movie_remove (movie);
     } else {
       SWFDEC_INFO ("cannot remove movie");
@@ -2803,7 +2803,7 @@ swfdec_action_clone_sprite (SwfdecAsContext *cx, guint action, const guint8 *dat
     }
     new_movie = swfdec_movie_duplicate (movie, new_name, depth);
     if (new_movie) {
-      SWFDEC_LOG ("duplicated %s as %s to depth %u", movie->nameasdf, new_movie->nameasdf, new_movie->depth);
+      SWFDEC_LOG ("duplicated %s as %s to depth %u", movie->name, new_movie->name, new_movie->depth);
     }
   }
   swfdec_as_stack_pop_n (cx, 3);
diff --git a/swfdec/swfdec_as_movie_value.c b/swfdec/swfdec_as_movie_value.c
index 8c351b6..821c4af 100644
--- a/swfdec/swfdec_as_movie_value.c
+++ b/swfdec/swfdec_as_movie_value.c
@@ -52,8 +52,8 @@ swfdec_as_movie_value_new (SwfdecMovie *movie, const char *name)
   val->names[n_names - 1] = name;
   movie = movie->parent;
   for (i = n_names - 2; movie; i--) {
-    if (movie->nameasdf != SWFDEC_AS_STR_EMPTY) {
-      val->names[i] = movie->nameasdf;
+    if (movie->name != SWFDEC_AS_STR_EMPTY) {
+      val->names[i] = movie->name;
     } else {
       val->names[i] = movie->as_value->names[i];
     };
diff --git a/swfdec/swfdec_as_object.c b/swfdec/swfdec_as_object.c
index 0f83536..460edf7 100644
--- a/swfdec/swfdec_as_object.c
+++ b/swfdec/swfdec_as_object.c
@@ -1160,10 +1160,10 @@ swfdec_as_object_foreach (SwfdecAsObject *object, SwfdecAsVariableForeach func,
 
     for (walk = movie->list; walk; walk = walk->next) {
       SwfdecMovie *cur = walk->data;
-      if (cur->nameasdf == SWFDEC_AS_STR_EMPTY)
+      if (cur->name == SWFDEC_AS_STR_EMPTY)
 	continue;
       SWFDEC_AS_VALUE_SET_MOVIE (&val, cur);
-      if (!func (object, cur->nameasdf, &val, 0, data))
+      if (!func (object, cur->name, &val, 0, data))
 	return FALSE;
     }
   }
diff --git a/swfdec/swfdec_movie.c b/swfdec/swfdec_movie.c
index d5202ca..8a3fba9 100644
--- a/swfdec/swfdec_movie.c
+++ b/swfdec/swfdec_movie.c
@@ -123,7 +123,7 @@ swfdec_movie_invalidate (SwfdecMovie *movie, const cairo_matrix_t *parent_to_glo
   }
   g_assert (movie->cache_state <= SWFDEC_MOVIE_INVALID_CHILDREN);
   SWFDEC_LOG ("invalidating %s %s at %s", G_OBJECT_TYPE_NAME (movie), 
-      movie->nameasdf, new_contents ? "end" : "start");
+      movie->name, new_contents ? "end" : "start");
   cairo_matrix_multiply (&matrix, &movie->matrix, parent_to_global);
   klass = SWFDEC_MOVIE_GET_CLASS (movie);
   klass->invalidate (movie, &matrix, new_contents);
@@ -354,7 +354,7 @@ swfdec_movie_do_remove (SwfdecMovie *movie, gboolean destroy)
 {
   SwfdecPlayer *player;
 
-  SWFDEC_LOG ("removing %s %s", G_OBJECT_TYPE_NAME (movie), movie->nameasdf);
+  SWFDEC_LOG ("removing %s %s", G_OBJECT_TYPE_NAME (movie), movie->name);
 
   player = SWFDEC_PLAYER (swfdec_gc_object_get_context (movie));
   while (movie->list) {
@@ -420,7 +420,7 @@ swfdec_movie_destroy (SwfdecMovie *movie)
   SwfdecPlayer *player = SWFDEC_PLAYER (swfdec_gc_object_get_context (movie));
 
   g_assert (movie->state < SWFDEC_MOVIE_STATE_DESTROYED);
-  SWFDEC_LOG ("destroying movie %s", movie->nameasdf);
+  SWFDEC_LOG ("destroying movie %s", movie->name);
   while (movie->list) {
     swfdec_movie_destroy (movie->list->data);
   }
@@ -617,7 +617,7 @@ swfdec_movie_do_contains (SwfdecMovie *movie, double x, double y, gboolean event
     SwfdecMovie *child = walk->data;
     
     if (!child->visible) {
-      SWFDEC_LOG ("%s %s (depth %d) is invisible, ignoring", G_OBJECT_TYPE_NAME (movie), movie->nameasdf, movie->depth);
+      SWFDEC_LOG ("%s %s (depth %d) is invisible, ignoring", G_OBJECT_TYPE_NAME (movie), movie->name, movie->depth);
       continue;
     }
     got = swfdec_movie_get_movie_at (child, x, y, events);
@@ -792,7 +792,7 @@ swfdec_movie_render (SwfdecMovie *movie, cairo_t *cr,
   
   if (movie->mask_of != NULL && !swfdec_color_transform_is_mask (color_transform)) {
     SWFDEC_LOG ("not rendering %s %p, movie is a mask",
-	G_OBJECT_TYPE_NAME (movie), movie->nameasdf);
+	G_OBJECT_TYPE_NAME (movie), movie->name);
     return;
   }
 
@@ -930,11 +930,11 @@ swfdec_movie_set_property (GObject *object, guint param_id, const GValue *value,
 	g_object_ref (movie->graphic);
       break;
     case PROP_NAME:
-      movie->nameasdf = g_value_get_string (value);
-      if (movie->nameasdf) {
-	movie->nameasdf = swfdec_as_context_get_string (cx, movie->nameasdf);
+      movie->name = g_value_get_string (value);
+      if (movie->name) {
+	movie->name = swfdec_as_context_get_string (cx, movie->name);
       } else {
-	movie->nameasdf = SWFDEC_AS_STR_EMPTY;
+	movie->name = SWFDEC_AS_STR_EMPTY;
       }
       break;
     case PROP_PARENT:
@@ -972,7 +972,7 @@ swfdec_movie_dispose (GObject *object)
 
   g_assert (movie->list == NULL);
 
-  SWFDEC_LOG ("disposing movie %s (depth %d)", movie->nameasdf, movie->depth);
+  SWFDEC_LOG ("disposing movie %s (depth %d)", movie->name, movie->depth);
   if (movie->graphic) {
     g_object_unref (movie->graphic);
     movie->graphic = NULL;
@@ -1004,7 +1004,7 @@ swfdec_movie_mark (SwfdecGcObject *object)
     swfdec_gc_object_mark (movie->parent);
   if (movie->as_value)
     swfdec_as_movie_value_mark (movie->as_value);
-  swfdec_as_string_mark (movie->nameasdf);
+  swfdec_as_string_mark (movie->name);
   g_list_foreach (movie->list, (GFunc) swfdec_gc_object_mark, NULL);
   g_slist_foreach (movie->filters, (GFunc) swfdec_gc_object_mark, NULL);
 
@@ -1054,13 +1054,13 @@ swfdec_movie_get_by_name (SwfdecMovie *movie, const char *name, gboolean unnamed
 
   for (walk = movie->list; walk; walk = walk->next) {
     SwfdecMovie *cur = walk->data;
-    if (swfdec_strcmp (version, cur->nameasdf, name) == 0) {
+    if (swfdec_strcmp (version, cur->name, name) == 0) {
       if (swfdec_movie_is_scriptable (cur))
 	return cur;
       else
 	return movie;
     }
-    if (unnamed && cur->nameasdf == SWFDEC_AS_STR_EMPTY) {
+    if (unnamed && cur->name == SWFDEC_AS_STR_EMPTY) {
       if (swfdec_strcmp (version, cur->as_value->names[cur->as_value->n_names - 1], name) == 0) {
 	/* unnamed movies are always scriptable */
 	return cur;
@@ -1241,7 +1241,7 @@ swfdec_movie_do_render (SwfdecMovie *movie, cairo_t *cr,
       clip->movie = child;
       clip->depth = child->clip_depth;
       SWFDEC_INFO ("clipping up to depth %d by using %s with depth %d", child->clip_depth,
-	  child->nameasdf, child->depth);
+	  child->name, child->depth);
       cairo_push_group (cr);
       continue;
     }
@@ -1307,12 +1307,12 @@ swfdec_movie_constructor (GType type, guint n_construct_properties,
   /* the movie is created invalid */
   priv->invalid_pending = g_slist_prepend (priv->invalid_pending, object);
 
-  if (movie->nameasdf == SWFDEC_AS_STR_EMPTY && 
+  if (movie->name == SWFDEC_AS_STR_EMPTY && 
       (swfdec_movie_is_scriptable (movie) || SWFDEC_IS_ACTOR (movie))) {
     name = swfdec_as_context_give_string (cx,
 	g_strdup_printf ("instance%u", ++priv->unnamed_count));
   } else {
-    name = movie->nameasdf;
+    name = movie->name;
   }
   if (name != SWFDEC_AS_STR_EMPTY)
     movie->as_value = swfdec_as_movie_value_new (movie, name);
@@ -1458,7 +1458,7 @@ swfdec_movie_set_static_properties (SwfdecMovie *movie, const cairo_matrix_t *tr
   g_return_if_fail (ratio >= -1);
 
   if (movie->modified) {
-    SWFDEC_LOG ("%s has already been modified by scripts, ignoring updates", movie->nameasdf);
+    SWFDEC_LOG ("%s has already been modified by scripts, ignoring updates", movie->name);
     return;
   }
   if (transform) {
@@ -1586,8 +1586,8 @@ swfdec_movie_get_path (SwfdecMovie *movie, gboolean dot)
   s = g_string_new ("");
   do {
     if (movie->parent) {
-      if (movie->nameasdf != SWFDEC_AS_STR_EMPTY) {
-	g_string_prepend (s, movie->nameasdf);
+      if (movie->name != SWFDEC_AS_STR_EMPTY) {
+	g_string_prepend (s, movie->name);
       } else if (movie->as_value) {
 	g_string_prepend (s, movie->as_value->names[movie->as_value->n_names - 1]);
       } else {
diff --git a/swfdec/swfdec_movie.h b/swfdec/swfdec_movie.h
index 8ca92f5..dd437db 100644
--- a/swfdec/swfdec_movie.h
+++ b/swfdec/swfdec_movie.h
@@ -122,7 +122,7 @@ struct _SwfdecMovie {
   SwfdecAsObject	object;
 
   SwfdecGraphic *	graphic;		/* graphic represented by this movie or NULL if script-created */
-  const char *		nameasdf;		/* name of movie - GC'd */
+  const char *		name;		/* name of movie - GC'd */
   GList *		list;			/* our contained movie clips (ordered by depth) */
   int			depth;			/* depth of movie (equals content->depth unless explicitly set) */
   SwfdecMovieCacheState	cache_state;		/* whether we are up to date */
diff --git a/swfdec/swfdec_movie_asprops.c b/swfdec/swfdec_movie_asprops.c
index 1961a1f..2009e85 100644
--- a/swfdec/swfdec_movie_asprops.c
+++ b/swfdec/swfdec_movie_asprops.c
@@ -138,13 +138,13 @@ mc_yscale_set (SwfdecMovie *movie, const SwfdecAsValue *val)
 static void
 mc_name_get (SwfdecMovie *movie, SwfdecAsValue *rval)
 {
-  SWFDEC_AS_VALUE_SET_STRING (rval, movie->nameasdf);
+  SWFDEC_AS_VALUE_SET_STRING (rval, movie->name);
 }
 
 static void
 mc_name_set (SwfdecMovie *movie, const SwfdecAsValue *val)
 {
-  movie->nameasdf = swfdec_as_value_to_string (swfdec_gc_object_get_context (movie), val);
+  movie->name = swfdec_as_value_to_string (swfdec_gc_object_get_context (movie), val);
 }
 
 static void
@@ -353,7 +353,7 @@ mc_target_get (SwfdecMovie *movie, SwfdecAsValue *rval)
 
   s = g_string_new ("");
   while (movie->parent) {
-    g_string_prepend (s, movie->nameasdf);
+    g_string_prepend (s, movie->name);
     g_string_prepend_c (s, '/');
     movie = movie->parent;
   }
diff --git a/swfdec/swfdec_player.c b/swfdec/swfdec_player.c
index 80bfa84..b52f784 100644
--- a/swfdec/swfdec_player.c
+++ b/swfdec/swfdec_player.c
@@ -453,7 +453,7 @@ swfdec_player_add_action (SwfdecPlayer *player, SwfdecActor *actor,
   g_return_if_fail (SWFDEC_IS_ACTOR (actor));
   g_return_if_fail (importance < SWFDEC_PLAYER_N_ACTION_QUEUES);
 
-  SWFDEC_LOG ("adding action %s %u", SWFDEC_MOVIE (actor)->nameasdf, type);
+  SWFDEC_LOG ("adding action %s %u", SWFDEC_MOVIE (actor)->name, type);
   swfdec_player_do_add_action (player, importance, &action);
 }
 
@@ -468,7 +468,7 @@ swfdec_player_add_action_script	(SwfdecPlayer *player, SwfdecActor *actor,
   g_return_if_fail (script != NULL);
   g_return_if_fail (importance < SWFDEC_PLAYER_N_ACTION_QUEUES);
 
-  SWFDEC_LOG ("adding action script %s %s", SWFDEC_MOVIE (actor)->nameasdf, script->name);
+  SWFDEC_LOG ("adding action script %s %s", SWFDEC_MOVIE (actor)->name, script->name);
   swfdec_player_do_add_action (player, importance, &action);
 }
 
@@ -1189,7 +1189,7 @@ swfdec_player_grab_focus (SwfdecPlayer *player, SwfdecActor *actor)
   priv = player->priv;
   if (actor == priv->focus) {
     SWFDEC_DEBUG ("nothing to do, focus change request from movie %s to itself", 
-	actor ? SWFDEC_MOVIE (actor)->nameasdf : "---");
+	actor ? SWFDEC_MOVIE (actor)->name : "---");
     return;
   }
   prev = priv->focus;
@@ -2615,7 +2615,7 @@ swfdec_player_create_movie_at_level (SwfdecPlayer *player, SwfdecResource *resou
   /* create new root movie */
   s = swfdec_as_context_give_string (SWFDEC_AS_CONTEXT (player), g_strdup_printf ("_level%d", level));
   movie = swfdec_movie_new (player, level - 16384, NULL, resource, NULL, s);
-  movie->nameasdf = SWFDEC_AS_STR_EMPTY;
+  movie->name = SWFDEC_AS_STR_EMPTY;
   return SWFDEC_SPRITE_MOVIE (movie);
 }
 
@@ -3798,7 +3798,7 @@ swfdec_player_set_url (SwfdecPlayer *player, const SwfdecURL *url)
   priv->resource = swfdec_resource_new (player, loader, priv->variables);
   movie = swfdec_movie_new (player, -16384, NULL, priv->resource, NULL, SWFDEC_AS_STR__level0);
   SWFDEC_ACTOR (movie)->focusrect = SWFDEC_FLASH_YES;
-  movie->nameasdf = SWFDEC_AS_STR_EMPTY;
+  movie->name = SWFDEC_AS_STR_EMPTY;
   g_object_unref (loader);
   g_object_notify (G_OBJECT (player), "url");
   g_object_thaw_notify (G_OBJECT (player));
diff --git a/swfdec/swfdec_resource.c b/swfdec/swfdec_resource.c
index ad974d4..3dee52e 100644
--- a/swfdec/swfdec_resource.c
+++ b/swfdec/swfdec_resource.c
@@ -184,7 +184,7 @@ swfdec_resource_replace_movie (SwfdecSpriteMovie *movie, SwfdecResource *resourc
   SwfdecMovie *copy;
   
   copy = swfdec_movie_new (SWFDEC_PLAYER (swfdec_gc_object_get_context (movie)), 
-      mov->depth, mov->parent, resource, NULL, mov->nameasdf);
+      mov->depth, mov->parent, resource, NULL, mov->name);
   if (copy == NULL)
     return FALSE;
   swfdec_movie_begin_update_matrix (copy);
diff --git a/swfdec/swfdec_sprite_movie.c b/swfdec/swfdec_sprite_movie.c
index 8f338a0..2dfbc42 100644
--- a/swfdec/swfdec_sprite_movie.c
+++ b/swfdec/swfdec_sprite_movie.c
@@ -79,7 +79,7 @@ swfdec_sprite_movie_perform_old_place (SwfdecSpriteMovie *movie,
 
   dec = SWFDEC_SWF_DECODER (mov->resource->decoder);
 
-  SWFDEC_LOG ("performing PlaceObject on movie %s", mov->nameasdf);
+  SWFDEC_LOG ("performing PlaceObject on movie %s", mov->name);
 
   id = swfdec_bits_get_u16 (bits);
   SWFDEC_LOG ("  id = %d", id);
@@ -175,7 +175,7 @@ swfdec_sprite_movie_perform_place (SwfdecSpriteMovie *movie, SwfdecBits *bits, g
   has_character = swfdec_bits_getbit (bits);
   move = swfdec_bits_getbit (bits);
 
-  SWFDEC_LOG ("performing PlaceObject%d on movie %s", tag == SWFDEC_TAG_PLACEOBJECT2 ? 2 : 3, mov->nameasdf);
+  SWFDEC_LOG ("performing PlaceObject%d on movie %s", tag == SWFDEC_TAG_PLACEOBJECT2 ? 2 : 3, mov->name);
   SWFDEC_LOG ("  has_clip_actions = %d", has_clip_actions);
   SWFDEC_LOG ("  has_clip_depth = %d", has_clip_depth);
   SWFDEC_LOG ("  has_name = %d", has_name);
@@ -323,7 +323,7 @@ swfdec_sprite_movie_perform_place (SwfdecSpriteMovie *movie, SwfdecBits *bits, g
 	has_ctrans ? &ctrans : NULL, ratio, clip_depth, blend_mode, events);
   } else {
     if (cur != NULL && version > 5) {
-      SWFDEC_INFO ("depth %d is already occupied by movie %s, not placing", depth, cur->nameasdf);
+      SWFDEC_INFO ("depth %d is already occupied by movie %s, not placing", depth, cur->name);
       goto out;
     }
     if (!SWFDEC_IS_GRAPHIC (graphic)) {
diff --git a/swfdec/swfdec_sprite_movie_as.c b/swfdec/swfdec_sprite_movie_as.c
index 2e667e0..cff5246 100644
--- a/swfdec/swfdec_sprite_movie_as.c
+++ b/swfdec/swfdec_sprite_movie_as.c
@@ -398,7 +398,7 @@ swfdec_sprite_movie_attachBitmap (SwfdecAsContext *cx, SwfdecAsObject *object,
 
   swfdec_bitmap_movie_new (parent, SWFDEC_BITMAP_DATA (bitmap->relay), depth);
   SWFDEC_LOG ("created new BitmapMovie to parent %s at depth %d", 
-      parent->nameasdf, depth);
+      parent->name, depth);
 }
 
 SWFDEC_AS_NATIVE (900, 26, swfdec_sprite_movie_getRect)
@@ -822,7 +822,7 @@ swfdec_sprite_movie_attachMovie (SwfdecAsContext *cx, SwfdecAsObject *object,
   ret = swfdec_movie_new (SWFDEC_PLAYER (swfdec_gc_object_get_context (object)),
       depth, movie, movie->resource, sprite, name);
   SWFDEC_LOG ("attached %s (%u) as %s to depth %u", export, SWFDEC_CHARACTER (sprite)->id,
-      ret->nameasdf, ret->depth);
+      ret->name, ret->depth);
   /* run init and construct */
   constructor = swfdec_player_get_export_class (SWFDEC_PLAYER (cx), export);
   if (constructor == NULL) {
@@ -854,7 +854,7 @@ swfdec_sprite_movie_duplicateMovieClip (SwfdecAsContext *cx, SwfdecAsObject *obj
   if (new == NULL)
     return;
   swfdec_sprite_movie_copy_props (new, movie);
-  SWFDEC_LOG ("duplicated %s as %s to depth %u", movie->nameasdf, new->nameasdf, new->depth);
+  SWFDEC_LOG ("duplicated %s as %s to depth %u", movie->name, new->name, new->depth);
   SWFDEC_AS_VALUE_SET_MOVIE (rval, new);
 }
 
diff --git a/vivified/ui/vivi_movie_list.c b/vivified/ui/vivi_movie_list.c
index 01a88cd..4b6cbf5 100644
--- a/vivified/ui/vivi_movie_list.c
+++ b/vivified/ui/vivi_movie_list.c
@@ -125,7 +125,7 @@ vivi_movie_list_get_value (GtkTreeModel *tree_model, GtkTreeIter *iter,
       return;
     case VIVI_MOVIE_LIST_COLUMN_NAME:
       g_value_init (value, G_TYPE_STRING);
-      g_value_set_string (value, movie->nameasdf);
+      g_value_set_string (value, movie->name);
       return;
     case VIVI_MOVIE_LIST_COLUMN_DEPTH:
       g_value_init (value, G_TYPE_INT);
commit f99e2db6715f7147458e29ac3b45f0a47ce7cc2e
Author: Benjamin Otte <otte at gnome.org>
Date:   Mon Nov 3 16:31:13 2008 +0100

    test how the primitive constructors convert values

diff --git a/test/trace/Makefile.am b/test/trace/Makefile.am
index 7e7761a..dd3a4c3 100644
--- a/test/trace/Makefile.am
+++ b/test/trace/Makefile.am
@@ -806,6 +806,15 @@ EXTRA_DIST = \
 	context-menu-properties-7.swf.trace \
 	context-menu-properties-8.swf \
 	context-menu-properties-8.swf.trace \
+	conversion-functions-5.swf \
+	conversion-functions-5.swf.trace \
+	conversion-functions-6.swf \
+	conversion-functions-6.swf.trace \
+	conversion-functions-7.swf \
+	conversion-functions-7.swf.trace \
+	conversion-functions-8.swf \
+	conversion-functions-8.swf.trace \
+	conversion-functions.as \
 	convolution-filter-properties.as \
 	convolution-filter-properties-5.swf \
 	convolution-filter-properties-5.swf.trace \
diff --git a/test/trace/conversion-functions-5.swf b/test/trace/conversion-functions-5.swf
new file mode 100644
index 0000000..01bd168
Binary files /dev/null and b/test/trace/conversion-functions-5.swf differ
diff --git a/test/trace/conversion-functions-5.swf.trace b/test/trace/conversion-functions-5.swf.trace
new file mode 100644
index 0000000..27ff83e
--- /dev/null
+++ b/test/trace/conversion-functions-5.swf.trace
@@ -0,0 +1,446 @@
+valueOf called
+toString called
+toString called with 
+valueOf called with 
+0: valueOf!
+1: valueOf!
+2: valueOf!
+3: valueOf!
+4: valueOf!
+5: valueOf!
+6: valueOf!
+7: valueOf!
+8: valueOf!
+9: valueOf!
+10: valueOf!
+11: valueOf!
+12: valueOf!
+13: valueOf!
+14: valueOf!
+15: valueOf!
+16: valueOf!
+17: valueOf!
+18: valueOf!
+19: valueOf!
+20: valueOf!
+21: valueOf!
+22: valueOf!
+22: toString!
+23: valueOf!
+23: toString!
+24: valueOf!
+24: toString!
+25: valueOf!
+26: valueOf!
+26: toString!
+27: valueOf!
+27: toString!
+28: valueOf!
+28: toString!
+29: valueOf!
+29: toString!
+(0)  (undefined)
+  Boolean: false (boolean)
+  Integer: 0 (number)
+  Number: 0 (number)
+  Object:  (object)
+(1) null (null)
+  Boolean: false (boolean)
+  Integer: 0 (number)
+  Number: 0 (number)
+  Object:  (object)
+(2) true (boolean)
+  Boolean: true (boolean)
+  Integer: 1 (number)
+  Number: 1 (number)
+  Object: true (object)
+(3) false (boolean)
+  Boolean: false (boolean)
+  Integer: 0 (number)
+  Number: 0 (number)
+  Object: false (object)
+(4) 0 (number)
+  Boolean: false (boolean)
+  Integer: 0 (number)
+  Number: 0 (number)
+  Object: 0 (object)
+(5) 1 (number)
+  Boolean: true (boolean)
+  Integer: 1 (number)
+  Number: 1 (number)
+  Object: 1 (object)
+(6) 0.5 (number)
+  Boolean: true (boolean)
+  Integer: 0 (number)
+  Number: 0.5 (number)
+  Object: 0.5 (object)
+(7) -1 (number)
+  Boolean: true (boolean)
+  Integer: -1 (number)
+  Number: -1 (number)
+  Object: -1 (object)
+(8) -0.5 (number)
+  Boolean: true (boolean)
+  Integer: 0 (number)
+  Number: -0.5 (number)
+  Object: -0.5 (object)
+(9) Infinity (number)
+  Boolean: true (boolean)
+  Integer: 0 (number)
+  Number: Infinity (number)
+  Object: Infinity (object)
+(10) -Infinity (number)
+  Boolean: true (boolean)
+  Integer: 0 (number)
+  Number: -Infinity (number)
+  Object: -Infinity (object)
+(11) NaN (number)
+  Boolean: false (boolean)
+  Integer: 0 (number)
+  Number: NaN (number)
+  Object: NaN (object)
+(12)  (string)
+  Boolean: false (boolean)
+  Integer: 0 (number)
+  Number: NaN (number)
+  Object:  (object)
+(13) 0 (string)
+  Boolean: false (boolean)
+  Integer: 0 (number)
+  Number: 0 (number)
+  Object: 0 (object)
+(14) -0 (string)
+  Boolean: false (boolean)
+  Integer: 0 (number)
+  Number: 0 (number)
+  Object: -0 (object)
+(15) 0.0 (string)
+  Boolean: false (boolean)
+  Integer: 0 (number)
+  Number: 0 (number)
+  Object: 0.0 (object)
+(16) 1 (string)
+  Boolean: true (boolean)
+  Integer: 1 (number)
+  Number: 1 (number)
+  Object: 1 (object)
+(17) Hello World! (string)
+  Boolean: false (boolean)
+  Integer: 0 (number)
+  Number: NaN (number)
+  Object: Hello World! (object)
+(18) true (string)
+  Boolean: false (boolean)
+  Integer: 0 (number)
+  Number: NaN (number)
+  Object: true (object)
+(19) _level0 (string)
+  Boolean: false (boolean)
+  Integer: 0 (number)
+  Number: NaN (number)
+  Object: _level0 (object)
+(20) äöü (string)
+  Boolean: false (boolean)
+  Integer: 0 (number)
+  Number: NaN (number)
+  Object: äöü (object)
+(21) _level0 (movieclip)
+  Boolean: true (boolean)
+  Integer: 0 (number)
+  Number: NaN (number)
+  Object: _level0 (movieclip)
+(22) [object Object] (object)
+  Boolean: true (boolean)
+  Integer: 0 (number)
+  Number: NaN (number)
+  Object: [object Object] (object)
+(23) 103584024400.25 (object)
+  Boolean: true (boolean)
+  Integer: 504809296 (number)
+  Number: 103584024400.25 (number)
+  Object: 103584024400.25 (object)
+(24)  (object)
+  Boolean: true (boolean)
+  Integer: 0 (number)
+  Number: NaN (number)
+  Object:  (object)
+(25)  (undefined)
+  Boolean: false (boolean)
+  Integer: 0 (number)
+  Number: 0 (number)
+  Object:  (object)
+(26) [type Object] (object)
+  Boolean: true (boolean)
+valueOf called
+  Integer: 0 (number)
+valueOf called
+  Number: NaN (number)
+valueOf called
+toString called
+  Object: [type Object] (object)
+(27) [type Object] (object)
+  Boolean: true (boolean)
+  Integer: 0 (number)
+  Number: NaN (number)
+toString called with 
+  Object: [type Object] (object)
+(28) [object Object] (object)
+  Boolean: true (boolean)
+valueOf called with 
+  Integer: 0 (number)
+valueOf called with 
+  Number: NaN (number)
+valueOf called with 
+  Object: [object Object] (object)
+(29)  (object)
+  Boolean: true (boolean)
+  Integer: 0 (number)
+  Number: 0 (number)
+  Object:  (object)
+(30)  (object)
+  Boolean: true (boolean)
+0: valueOf!
+  Integer: 0 (number)
+0: valueOf!
+  Number: 0 (number)
+0: valueOf!
+  Object:  (object)
+(31) null (object)
+  Boolean: true (boolean)
+1: valueOf!
+  Integer: 0 (number)
+1: valueOf!
+  Number: 0 (number)
+1: valueOf!
+  Object: null (object)
+(32) true (object)
+  Boolean: true (boolean)
+2: valueOf!
+  Integer: 1 (number)
+2: valueOf!
+  Number: 1 (number)
+2: valueOf!
+  Object: true (object)
+(33) false (object)
+  Boolean: true (boolean)
+3: valueOf!
+  Integer: 0 (number)
+3: valueOf!
+  Number: 0 (number)
+3: valueOf!
+  Object: false (object)
+(34) 0 (object)
+  Boolean: true (boolean)
+4: valueOf!
+  Integer: 0 (number)
+4: valueOf!
+  Number: 0 (number)
+4: valueOf!
+  Object: 0 (object)
+(35) 1 (object)
+  Boolean: true (boolean)
+5: valueOf!
+  Integer: 1 (number)
+5: valueOf!
+  Number: 1 (number)
+5: valueOf!
+  Object: 1 (object)
+(36) 0.5 (object)
+  Boolean: true (boolean)
+6: valueOf!
+  Integer: 0 (number)
+6: valueOf!
+  Number: 0.5 (number)
+6: valueOf!
+  Object: 0.5 (object)
+(37) -1 (object)
+  Boolean: true (boolean)
+7: valueOf!
+  Integer: -1 (number)
+7: valueOf!
+  Number: -1 (number)
+7: valueOf!
+  Object: -1 (object)
+(38) -0.5 (object)
+  Boolean: true (boolean)
+8: valueOf!
+  Integer: 0 (number)
+8: valueOf!
+  Number: -0.5 (number)
+8: valueOf!
+  Object: -0.5 (object)
+(39) Infinity (object)
+  Boolean: true (boolean)
+9: valueOf!
+  Integer: 0 (number)
+9: valueOf!
+  Number: Infinity (number)
+9: valueOf!
+  Object: Infinity (object)
+(40) -Infinity (object)
+  Boolean: true (boolean)
+10: valueOf!
+  Integer: 0 (number)
+10: valueOf!
+  Number: -Infinity (number)
+10: valueOf!
+  Object: -Infinity (object)
+(41) NaN (object)
+  Boolean: true (boolean)
+11: valueOf!
+  Integer: 0 (number)
+11: valueOf!
+  Number: NaN (number)
+11: valueOf!
+  Object: NaN (object)
+(42)  (object)
+  Boolean: true (boolean)
+12: valueOf!
+  Integer: 0 (number)
+12: valueOf!
+  Number: NaN (number)
+12: valueOf!
+  Object:  (object)
+(43) 0 (object)
+  Boolean: true (boolean)
+13: valueOf!
+  Integer: 0 (number)
+13: valueOf!
+  Number: 0 (number)
+13: valueOf!
+  Object: 0 (object)
+(44) -0 (object)
+  Boolean: true (boolean)
+14: valueOf!
+  Integer: 0 (number)
+14: valueOf!
+  Number: 0 (number)
+14: valueOf!
+  Object: -0 (object)
+(45) 0.0 (object)
+  Boolean: true (boolean)
+15: valueOf!
+  Integer: 0 (number)
+15: valueOf!
+  Number: 0 (number)
+15: valueOf!
+  Object: 0.0 (object)
+(46) 1 (object)
+  Boolean: true (boolean)
+16: valueOf!
+  Integer: 1 (number)
+16: valueOf!
+  Number: 1 (number)
+16: valueOf!
+  Object: 1 (object)
+(47) Hello World! (object)
+  Boolean: true (boolean)
+17: valueOf!
+  Integer: 0 (number)
+17: valueOf!
+  Number: NaN (number)
+17: valueOf!
+  Object: Hello World! (object)
+(48) true (object)
+  Boolean: true (boolean)
+18: valueOf!
+  Integer: 0 (number)
+18: valueOf!
+  Number: NaN (number)
+18: valueOf!
+  Object: true (object)
+(49) _level0 (object)
+  Boolean: true (boolean)
+19: valueOf!
+  Integer: 0 (number)
+19: valueOf!
+  Number: NaN (number)
+19: valueOf!
+  Object: _level0 (object)
+(50) äöü (object)
+  Boolean: true (boolean)
+20: valueOf!
+  Integer: 0 (number)
+20: valueOf!
+  Number: NaN (number)
+20: valueOf!
+  Object: äöü (object)
+(51) _level0 (object)
+  Boolean: true (boolean)
+21: valueOf!
+  Integer: 0 (number)
+21: valueOf!
+  Number: NaN (number)
+21: valueOf!
+  Object: _level0 (object)
+(52) [type Object] (object)
+  Boolean: true (boolean)
+22: valueOf!
+  Integer: 0 (number)
+22: valueOf!
+  Number: NaN (number)
+22: valueOf!
+22: toString!
+  Object: [type Object] (object)
+(53) [type Object] (object)
+  Boolean: true (boolean)
+23: valueOf!
+  Integer: 0 (number)
+23: valueOf!
+  Number: NaN (number)
+23: valueOf!
+23: toString!
+  Object: [type Object] (object)
+(54) [type Object] (object)
+  Boolean: true (boolean)
+24: valueOf!
+  Integer: 0 (number)
+24: valueOf!
+  Number: NaN (number)
+24: valueOf!
+24: toString!
+  Object: [type Object] (object)
+(55)  (object)
+  Boolean: true (boolean)
+25: valueOf!
+  Integer: 0 (number)
+25: valueOf!
+  Number: 0 (number)
+25: valueOf!
+  Object:  (object)
+(56) [type Object] (object)
+  Boolean: true (boolean)
+26: valueOf!
+  Integer: 0 (number)
+26: valueOf!
+  Number: NaN (number)
+26: valueOf!
+26: toString!
+  Object: [type Object] (object)
+(57) [type Object] (object)
+  Boolean: true (boolean)
+27: valueOf!
+  Integer: 0 (number)
+27: valueOf!
+  Number: NaN (number)
+27: valueOf!
+27: toString!
+  Object: [type Object] (object)
+(58) [type Object] (object)
+  Boolean: true (boolean)
+28: valueOf!
+  Integer: 0 (number)
+28: valueOf!
+  Number: NaN (number)
+28: valueOf!
+28: toString!
+  Object: [type Object] (object)
+(59) [type Object] (object)
+  Boolean: true (boolean)
+29: valueOf!
+  Integer: 0 (number)
+29: valueOf!
+  Number: NaN (number)
+29: valueOf!
+29: toString!
+  Object: [type Object] (object)
diff --git a/test/trace/conversion-functions-6.swf b/test/trace/conversion-functions-6.swf
new file mode 100644
index 0000000..7527e8f
Binary files /dev/null and b/test/trace/conversion-functions-6.swf differ
diff --git a/test/trace/conversion-functions-6.swf.trace b/test/trace/conversion-functions-6.swf.trace
new file mode 100644
index 0000000..cc21f05
--- /dev/null
+++ b/test/trace/conversion-functions-6.swf.trace
@@ -0,0 +1,448 @@
+valueOf called
+toString called
+toString called with 
+valueOf called with 
+0: valueOf!
+1: valueOf!
+2: valueOf!
+3: valueOf!
+4: valueOf!
+5: valueOf!
+6: valueOf!
+7: valueOf!
+8: valueOf!
+9: valueOf!
+10: valueOf!
+11: valueOf!
+12: valueOf!
+13: valueOf!
+14: valueOf!
+15: valueOf!
+16: valueOf!
+17: valueOf!
+18: valueOf!
+19: valueOf!
+20: valueOf!
+21: valueOf!
+22: valueOf!
+22: toString!
+23: valueOf!
+23: toString!
+24: valueOf!
+24: toString!
+25: valueOf!
+25: toString!
+26: valueOf!
+26: toString!
+27: valueOf!
+27: toString!
+28: valueOf!
+28: toString!
+29: valueOf!
+29: toString!
+(0)  (undefined)
+  Boolean: false (boolean)
+  Integer: 0 (number)
+  Number: 0 (number)
+  Object:  (object)
+(1) null (null)
+  Boolean: false (boolean)
+  Integer: 0 (number)
+  Number: 0 (number)
+  Object:  (object)
+(2) true (boolean)
+  Boolean: true (boolean)
+  Integer: 1 (number)
+  Number: 1 (number)
+  Object: true (object)
+(3) false (boolean)
+  Boolean: false (boolean)
+  Integer: 0 (number)
+  Number: 0 (number)
+  Object: false (object)
+(4) 0 (number)
+  Boolean: false (boolean)
+  Integer: 0 (number)
+  Number: 0 (number)
+  Object: 0 (object)
+(5) 1 (number)
+  Boolean: true (boolean)
+  Integer: 1 (number)
+  Number: 1 (number)
+  Object: 1 (object)
+(6) 0.5 (number)
+  Boolean: true (boolean)
+  Integer: 0 (number)
+  Number: 0.5 (number)
+  Object: 0.5 (object)
+(7) -1 (number)
+  Boolean: true (boolean)
+  Integer: -1 (number)
+  Number: -1 (number)
+  Object: -1 (object)
+(8) -0.5 (number)
+  Boolean: true (boolean)
+  Integer: 0 (number)
+  Number: -0.5 (number)
+  Object: -0.5 (object)
+(9) Infinity (number)
+  Boolean: true (boolean)
+  Integer: 0 (number)
+  Number: Infinity (number)
+  Object: Infinity (object)
+(10) -Infinity (number)
+  Boolean: true (boolean)
+  Integer: 0 (number)
+  Number: -Infinity (number)
+  Object: -Infinity (object)
+(11) NaN (number)
+  Boolean: false (boolean)
+  Integer: 0 (number)
+  Number: NaN (number)
+  Object: NaN (object)
+(12)  (string)
+  Boolean: false (boolean)
+  Integer: 0 (number)
+  Number: NaN (number)
+  Object:  (object)
+(13) 0 (string)
+  Boolean: false (boolean)
+  Integer: 0 (number)
+  Number: 0 (number)
+  Object: 0 (object)
+(14) -0 (string)
+  Boolean: false (boolean)
+  Integer: 0 (number)
+  Number: 0 (number)
+  Object: -0 (object)
+(15) 0.0 (string)
+  Boolean: false (boolean)
+  Integer: 0 (number)
+  Number: 0 (number)
+  Object: 0.0 (object)
+(16) 1 (string)
+  Boolean: true (boolean)
+  Integer: 1 (number)
+  Number: 1 (number)
+  Object: 1 (object)
+(17) Hello World! (string)
+  Boolean: false (boolean)
+  Integer: 0 (number)
+  Number: NaN (number)
+  Object: Hello World! (object)
+(18) true (string)
+  Boolean: false (boolean)
+  Integer: 0 (number)
+  Number: NaN (number)
+  Object: true (object)
+(19) _level0 (string)
+  Boolean: false (boolean)
+  Integer: 0 (number)
+  Number: NaN (number)
+  Object: _level0 (object)
+(20) äöü (string)
+  Boolean: false (boolean)
+  Integer: 0 (number)
+  Number: NaN (number)
+  Object: äöü (object)
+(21) _level0 (movieclip)
+  Boolean: true (boolean)
+  Integer: 0 (number)
+  Number: NaN (number)
+  Object: _level0 (movieclip)
+(22) [object Object] (object)
+  Boolean: true (boolean)
+  Integer: 0 (number)
+  Number: NaN (number)
+  Object: [object Object] (object)
+(23) Fri Apr 13 21:20:24 GMT+0000 1973 (object)
+  Boolean: true (boolean)
+  Integer: 504809296 (number)
+  Number: 103584024400.25 (number)
+  Object: Fri Apr 13 21:20:24 GMT+0000 1973 (object)
+(24)  (object)
+  Boolean: true (boolean)
+  Integer: 0 (number)
+  Number: NaN (number)
+  Object:  (object)
+(25) [type Function] (function)
+  Boolean: true (boolean)
+  Integer: 0 (number)
+  Number: NaN (number)
+  Object: [type Function] (function)
+(26) [type Object] (object)
+  Boolean: true (boolean)
+valueOf called
+  Integer: 0 (number)
+valueOf called
+  Number: NaN (number)
+valueOf called
+toString called
+  Object: [type Object] (object)
+(27) [type Object] (object)
+  Boolean: true (boolean)
+  Integer: 0 (number)
+  Number: NaN (number)
+toString called with 
+  Object: [type Object] (object)
+(28) [object Object] (object)
+  Boolean: true (boolean)
+valueOf called with 
+  Integer: 0 (number)
+valueOf called with 
+  Number: NaN (number)
+valueOf called with 
+  Object: [object Object] (object)
+(29)  (object)
+  Boolean: true (boolean)
+  Integer: 0 (number)
+  Number: 0 (number)
+  Object:  (object)
+(30)  (object)
+  Boolean: true (boolean)
+0: valueOf!
+  Integer: 0 (number)
+0: valueOf!
+  Number: 0 (number)
+0: valueOf!
+  Object:  (object)
+(31) null (object)
+  Boolean: true (boolean)
+1: valueOf!
+  Integer: 0 (number)
+1: valueOf!
+  Number: 0 (number)
+1: valueOf!
+  Object: null (object)
+(32) true (object)
+  Boolean: true (boolean)
+2: valueOf!
+  Integer: 1 (number)
+2: valueOf!
+  Number: 1 (number)
+2: valueOf!
+  Object: true (object)
+(33) false (object)
+  Boolean: true (boolean)
+3: valueOf!
+  Integer: 0 (number)
+3: valueOf!
+  Number: 0 (number)
+3: valueOf!
+  Object: false (object)
+(34) 0 (object)
+  Boolean: true (boolean)
+4: valueOf!
+  Integer: 0 (number)
+4: valueOf!
+  Number: 0 (number)
+4: valueOf!
+  Object: 0 (object)
+(35) 1 (object)
+  Boolean: true (boolean)
+5: valueOf!
+  Integer: 1 (number)
+5: valueOf!
+  Number: 1 (number)
+5: valueOf!
+  Object: 1 (object)
+(36) 0.5 (object)
+  Boolean: true (boolean)
+6: valueOf!
+  Integer: 0 (number)
+6: valueOf!
+  Number: 0.5 (number)
+6: valueOf!
+  Object: 0.5 (object)
+(37) -1 (object)
+  Boolean: true (boolean)
+7: valueOf!
+  Integer: -1 (number)
+7: valueOf!
+  Number: -1 (number)
+7: valueOf!
+  Object: -1 (object)
+(38) -0.5 (object)
+  Boolean: true (boolean)
+8: valueOf!
+  Integer: 0 (number)
+8: valueOf!
+  Number: -0.5 (number)
+8: valueOf!
+  Object: -0.5 (object)
+(39) Infinity (object)
+  Boolean: true (boolean)
+9: valueOf!
+  Integer: 0 (number)
+9: valueOf!
+  Number: Infinity (number)
+9: valueOf!
+  Object: Infinity (object)
+(40) -Infinity (object)
+  Boolean: true (boolean)
+10: valueOf!
+  Integer: 0 (number)
+10: valueOf!
+  Number: -Infinity (number)
+10: valueOf!
+  Object: -Infinity (object)
+(41) NaN (object)
+  Boolean: true (boolean)
+11: valueOf!
+  Integer: 0 (number)
+11: valueOf!
+  Number: NaN (number)
+11: valueOf!
+  Object: NaN (object)
+(42)  (object)
+  Boolean: true (boolean)
+12: valueOf!
+  Integer: 0 (number)
+12: valueOf!
+  Number: NaN (number)
+12: valueOf!
+  Object:  (object)
+(43) 0 (object)
+  Boolean: true (boolean)
+13: valueOf!
+  Integer: 0 (number)
+13: valueOf!
+  Number: 0 (number)
+13: valueOf!
+  Object: 0 (object)
+(44) -0 (object)
+  Boolean: true (boolean)
+14: valueOf!
+  Integer: 0 (number)
+14: valueOf!
+  Number: 0 (number)
+14: valueOf!
+  Object: -0 (object)
+(45) 0.0 (object)
+  Boolean: true (boolean)
+15: valueOf!
+  Integer: 0 (number)
+15: valueOf!
+  Number: 0 (number)
+15: valueOf!
+  Object: 0.0 (object)
+(46) 1 (object)
+  Boolean: true (boolean)
+16: valueOf!
+  Integer: 1 (number)
+16: valueOf!
+  Number: 1 (number)
+16: valueOf!
+  Object: 1 (object)
+(47) Hello World! (object)
+  Boolean: true (boolean)
+17: valueOf!
+  Integer: 0 (number)
+17: valueOf!
+  Number: NaN (number)
+17: valueOf!
+  Object: Hello World! (object)
+(48) true (object)
+  Boolean: true (boolean)
+18: valueOf!
+  Integer: 0 (number)
+18: valueOf!
+  Number: NaN (number)
+18: valueOf!
+  Object: true (object)
+(49) _level0 (object)
+  Boolean: true (boolean)
+19: valueOf!
+  Integer: 0 (number)
+19: valueOf!
+  Number: NaN (number)
+19: valueOf!
+  Object: _level0 (object)
+(50) äöü (object)
+  Boolean: true (boolean)
+20: valueOf!
+  Integer: 0 (number)
+20: valueOf!
+  Number: NaN (number)
+20: valueOf!
+  Object: äöü (object)
+(51) _level0 (object)
+  Boolean: true (boolean)
+21: valueOf!
+  Integer: 0 (number)
+21: valueOf!
+  Number: NaN (number)
+21: valueOf!
+  Object: _level0 (object)
+(52) [type Object] (object)
+  Boolean: true (boolean)
+22: valueOf!
+  Integer: 0 (number)
+22: valueOf!
+  Number: NaN (number)
+22: valueOf!
+22: toString!
+  Object: [type Object] (object)
+(53) [type Object] (object)
+  Boolean: true (boolean)
+23: valueOf!
+  Integer: 0 (number)
+23: valueOf!
+  Number: NaN (number)
+23: valueOf!
+23: toString!
+  Object: [type Object] (object)
+(54) [type Object] (object)
+  Boolean: true (boolean)
+24: valueOf!
+  Integer: 0 (number)
+24: valueOf!
+  Number: NaN (number)
+24: valueOf!
+24: toString!
+  Object: [type Object] (object)
+(55) [type Object] (object)
+  Boolean: true (boolean)
+25: valueOf!
+  Integer: 0 (number)
+25: valueOf!
+  Number: NaN (number)
+25: valueOf!
+25: toString!
+  Object: [type Object] (object)
+(56) [type Object] (object)
+  Boolean: true (boolean)
+26: valueOf!
+  Integer: 0 (number)
+26: valueOf!
+  Number: NaN (number)
+26: valueOf!
+26: toString!
+  Object: [type Object] (object)
+(57) [type Object] (object)
+  Boolean: true (boolean)
+27: valueOf!
+  Integer: 0 (number)
+27: valueOf!
+  Number: NaN (number)
+27: valueOf!
+27: toString!
+  Object: [type Object] (object)
+(58) [type Object] (object)
+  Boolean: true (boolean)
+28: valueOf!
+  Integer: 0 (number)
+28: valueOf!
+  Number: NaN (number)
+28: valueOf!
+28: toString!
+  Object: [type Object] (object)
+(59) [type Object] (object)
+  Boolean: true (boolean)
+29: valueOf!
+  Integer: 0 (number)
+29: valueOf!
+  Number: NaN (number)
+29: valueOf!
+29: toString!
+  Object: [type Object] (object)
diff --git a/test/trace/conversion-functions-7.swf b/test/trace/conversion-functions-7.swf
new file mode 100644
index 0000000..ca47b75
Binary files /dev/null and b/test/trace/conversion-functions-7.swf differ
diff --git a/test/trace/conversion-functions-7.swf.trace b/test/trace/conversion-functions-7.swf.trace
new file mode 100644
index 0000000..51b2b5e
--- /dev/null
+++ b/test/trace/conversion-functions-7.swf.trace
@@ -0,0 +1,448 @@
+valueOf called
+toString called
+toString called with 
+valueOf called with 
+0: valueOf!
+1: valueOf!
+2: valueOf!
+3: valueOf!
+4: valueOf!
+5: valueOf!
+6: valueOf!
+7: valueOf!
+8: valueOf!
+9: valueOf!
+10: valueOf!
+11: valueOf!
+12: valueOf!
+13: valueOf!
+14: valueOf!
+15: valueOf!
+16: valueOf!
+17: valueOf!
+18: valueOf!
+19: valueOf!
+20: valueOf!
+21: valueOf!
+22: valueOf!
+22: toString!
+23: valueOf!
+23: toString!
+24: valueOf!
+24: toString!
+25: valueOf!
+25: toString!
+26: valueOf!
+26: toString!
+27: valueOf!
+27: toString!
+28: valueOf!
+28: toString!
+29: valueOf!
+29: toString!
+(0) undefined (undefined)
+  Boolean: false (boolean)
+  Integer: 0 (number)
+  Number: NaN (number)
+  Object: undefined (object)
+(1) null (null)
+  Boolean: false (boolean)
+  Integer: 0 (number)
+  Number: NaN (number)
+  Object: undefined (object)
+(2) true (boolean)
+  Boolean: true (boolean)
+  Integer: 1 (number)
+  Number: 1 (number)
+  Object: true (object)
+(3) false (boolean)
+  Boolean: false (boolean)
+  Integer: 0 (number)
+  Number: 0 (number)
+  Object: false (object)
+(4) 0 (number)
+  Boolean: false (boolean)
+  Integer: 0 (number)
+  Number: 0 (number)
+  Object: 0 (object)
+(5) 1 (number)
+  Boolean: true (boolean)
+  Integer: 1 (number)
+  Number: 1 (number)
+  Object: 1 (object)
+(6) 0.5 (number)
+  Boolean: true (boolean)
+  Integer: 0 (number)
+  Number: 0.5 (number)
+  Object: 0.5 (object)
+(7) -1 (number)
+  Boolean: true (boolean)
+  Integer: -1 (number)
+  Number: -1 (number)
+  Object: -1 (object)
+(8) -0.5 (number)
+  Boolean: true (boolean)
+  Integer: 0 (number)
+  Number: -0.5 (number)
+  Object: -0.5 (object)
+(9) Infinity (number)
+  Boolean: true (boolean)
+  Integer: 0 (number)
+  Number: Infinity (number)
+  Object: Infinity (object)
+(10) -Infinity (number)
+  Boolean: true (boolean)
+  Integer: 0 (number)
+  Number: -Infinity (number)
+  Object: -Infinity (object)
+(11) NaN (number)
+  Boolean: false (boolean)
+  Integer: 0 (number)
+  Number: NaN (number)
+  Object: NaN (object)
+(12)  (string)
+  Boolean: false (boolean)
+  Integer: 0 (number)
+  Number: NaN (number)
+  Object:  (object)
+(13) 0 (string)
+  Boolean: true (boolean)
+  Integer: 0 (number)
+  Number: 0 (number)
+  Object: 0 (object)
+(14) -0 (string)
+  Boolean: true (boolean)
+  Integer: 0 (number)
+  Number: 0 (number)
+  Object: -0 (object)
+(15) 0.0 (string)
+  Boolean: true (boolean)
+  Integer: 0 (number)
+  Number: 0 (number)
+  Object: 0.0 (object)
+(16) 1 (string)
+  Boolean: true (boolean)
+  Integer: 1 (number)
+  Number: 1 (number)
+  Object: 1 (object)
+(17) Hello World! (string)
+  Boolean: true (boolean)
+  Integer: 0 (number)
+  Number: NaN (number)
+  Object: Hello World! (object)
+(18) true (string)
+  Boolean: true (boolean)
+  Integer: 0 (number)
+  Number: NaN (number)
+  Object: true (object)
+(19) _level0 (string)
+  Boolean: true (boolean)
+  Integer: 0 (number)
+  Number: NaN (number)
+  Object: _level0 (object)
+(20) äöü (string)
+  Boolean: true (boolean)
+  Integer: 0 (number)
+  Number: NaN (number)
+  Object: äöü (object)
+(21) _level0 (movieclip)
+  Boolean: true (boolean)
+  Integer: 0 (number)
+  Number: NaN (number)
+  Object: _level0 (movieclip)
+(22) [object Object] (object)
+  Boolean: true (boolean)
+  Integer: 0 (number)
+  Number: NaN (number)
+  Object: [object Object] (object)
+(23) Fri Apr 13 21:20:24 GMT+0000 1973 (object)
+  Boolean: true (boolean)
+  Integer: 504809296 (number)
+  Number: 103584024400.25 (number)
+  Object: Fri Apr 13 21:20:24 GMT+0000 1973 (object)
+(24)  (object)
+  Boolean: true (boolean)
+  Integer: 0 (number)
+  Number: NaN (number)
+  Object:  (object)
+(25) [type Function] (function)
+  Boolean: true (boolean)
+  Integer: 0 (number)
+  Number: NaN (number)
+  Object: [type Function] (function)
+(26) [type Object] (object)
+  Boolean: true (boolean)
+valueOf called
+  Integer: 0 (number)
+valueOf called
+  Number: NaN (number)
+valueOf called
+toString called
+  Object: [type Object] (object)
+(27) [type Object] (object)
+  Boolean: true (boolean)
+  Integer: 0 (number)
+  Number: NaN (number)
+toString called with 
+  Object: [type Object] (object)
+(28) [object Object] (object)
+  Boolean: true (boolean)
+valueOf called with 
+  Integer: 0 (number)
+valueOf called with 
+  Number: NaN (number)
+valueOf called with 
+  Object: [object Object] (object)
+(29) undefined (object)
+  Boolean: true (boolean)
+  Integer: 0 (number)
+  Number: NaN (number)
+  Object: undefined (object)
+(30) undefined (object)
+  Boolean: true (boolean)
+0: valueOf!
+  Integer: 0 (number)
+0: valueOf!
+  Number: NaN (number)
+0: valueOf!
+  Object: undefined (object)
+(31) null (object)
+  Boolean: true (boolean)
+1: valueOf!
+  Integer: 0 (number)
+1: valueOf!
+  Number: NaN (number)
+1: valueOf!
+  Object: null (object)
+(32) true (object)
+  Boolean: true (boolean)
+2: valueOf!
+  Integer: 1 (number)
+2: valueOf!
+  Number: 1 (number)
+2: valueOf!
+  Object: true (object)
+(33) false (object)
+  Boolean: true (boolean)
+3: valueOf!
+  Integer: 0 (number)
+3: valueOf!
+  Number: 0 (number)
+3: valueOf!
+  Object: false (object)
+(34) 0 (object)
+  Boolean: true (boolean)
+4: valueOf!
+  Integer: 0 (number)
+4: valueOf!
+  Number: 0 (number)
+4: valueOf!
+  Object: 0 (object)
+(35) 1 (object)
+  Boolean: true (boolean)
+5: valueOf!
+  Integer: 1 (number)
+5: valueOf!
+  Number: 1 (number)
+5: valueOf!
+  Object: 1 (object)
+(36) 0.5 (object)
+  Boolean: true (boolean)
+6: valueOf!
+  Integer: 0 (number)
+6: valueOf!
+  Number: 0.5 (number)
+6: valueOf!
+  Object: 0.5 (object)
+(37) -1 (object)
+  Boolean: true (boolean)
+7: valueOf!
+  Integer: -1 (number)
+7: valueOf!
+  Number: -1 (number)
+7: valueOf!
+  Object: -1 (object)
+(38) -0.5 (object)
+  Boolean: true (boolean)
+8: valueOf!
+  Integer: 0 (number)
+8: valueOf!
+  Number: -0.5 (number)
+8: valueOf!
+  Object: -0.5 (object)
+(39) Infinity (object)
+  Boolean: true (boolean)
+9: valueOf!
+  Integer: 0 (number)
+9: valueOf!
+  Number: Infinity (number)
+9: valueOf!
+  Object: Infinity (object)
+(40) -Infinity (object)
+  Boolean: true (boolean)
+10: valueOf!
+  Integer: 0 (number)
+10: valueOf!
+  Number: -Infinity (number)
+10: valueOf!
+  Object: -Infinity (object)
+(41) NaN (object)
+  Boolean: true (boolean)
+11: valueOf!
+  Integer: 0 (number)
+11: valueOf!
+  Number: NaN (number)
+11: valueOf!
+  Object: NaN (object)
+(42)  (object)
+  Boolean: true (boolean)
+12: valueOf!
+  Integer: 0 (number)
+12: valueOf!
+  Number: NaN (number)
+12: valueOf!
+  Object:  (object)
+(43) 0 (object)
+  Boolean: true (boolean)
+13: valueOf!
+  Integer: 0 (number)
+13: valueOf!
+  Number: 0 (number)
+13: valueOf!
+  Object: 0 (object)
+(44) -0 (object)
+  Boolean: true (boolean)
+14: valueOf!
+  Integer: 0 (number)
+14: valueOf!
+  Number: 0 (number)
+14: valueOf!
+  Object: -0 (object)
+(45) 0.0 (object)
+  Boolean: true (boolean)
+15: valueOf!
+  Integer: 0 (number)
+15: valueOf!
+  Number: 0 (number)
+15: valueOf!
+  Object: 0.0 (object)
+(46) 1 (object)
+  Boolean: true (boolean)
+16: valueOf!
+  Integer: 1 (number)
+16: valueOf!
+  Number: 1 (number)
+16: valueOf!
+  Object: 1 (object)
+(47) Hello World! (object)
+  Boolean: true (boolean)
+17: valueOf!
+  Integer: 0 (number)
+17: valueOf!
+  Number: NaN (number)
+17: valueOf!
+  Object: Hello World! (object)
+(48) true (object)
+  Boolean: true (boolean)
+18: valueOf!
+  Integer: 0 (number)
+18: valueOf!
+  Number: NaN (number)
+18: valueOf!
+  Object: true (object)
+(49) _level0 (object)
+  Boolean: true (boolean)
+19: valueOf!
+  Integer: 0 (number)
+19: valueOf!
+  Number: NaN (number)
+19: valueOf!
+  Object: _level0 (object)
+(50) äöü (object)
+  Boolean: true (boolean)
+20: valueOf!
+  Integer: 0 (number)
+20: valueOf!
+  Number: NaN (number)
+20: valueOf!
+  Object: äöü (object)
+(51) _level0 (object)
+  Boolean: true (boolean)
+21: valueOf!
+  Integer: 0 (number)
+21: valueOf!
+  Number: NaN (number)
+21: valueOf!
+  Object: _level0 (object)
+(52) [type Object] (object)
+  Boolean: true (boolean)
+22: valueOf!
+  Integer: 0 (number)
+22: valueOf!
+  Number: NaN (number)
+22: valueOf!
+22: toString!
+  Object: [type Object] (object)
+(53) [type Object] (object)
+  Boolean: true (boolean)
+23: valueOf!
+  Integer: 0 (number)
+23: valueOf!
+  Number: NaN (number)
+23: valueOf!
+23: toString!
+  Object: [type Object] (object)
+(54) [type Object] (object)
+  Boolean: true (boolean)
+24: valueOf!
+  Integer: 0 (number)
+24: valueOf!
+  Number: NaN (number)
+24: valueOf!
+24: toString!
+  Object: [type Object] (object)
+(55) [type Object] (object)
+  Boolean: true (boolean)
+25: valueOf!
+  Integer: 0 (number)
+25: valueOf!
+  Number: NaN (number)
+25: valueOf!
+25: toString!
+  Object: [type Object] (object)
+(56) [type Object] (object)
+  Boolean: true (boolean)
+26: valueOf!
+  Integer: 0 (number)
+26: valueOf!
+  Number: NaN (number)
+26: valueOf!
+26: toString!
+  Object: [type Object] (object)
+(57) [type Object] (object)
+  Boolean: true (boolean)
+27: valueOf!
+  Integer: 0 (number)
+27: valueOf!
+  Number: NaN (number)
+27: valueOf!
+27: toString!
+  Object: [type Object] (object)
+(58) [type Object] (object)
+  Boolean: true (boolean)
+28: valueOf!
+  Integer: 0 (number)
+28: valueOf!
+  Number: NaN (number)
+28: valueOf!
+28: toString!
+  Object: [type Object] (object)
+(59) [type Object] (object)
+  Boolean: true (boolean)
+29: valueOf!
+  Integer: 0 (number)
+29: valueOf!
+  Number: NaN (number)
+29: valueOf!
+29: toString!
+  Object: [type Object] (object)
diff --git a/test/trace/conversion-functions-8.swf b/test/trace/conversion-functions-8.swf
new file mode 100644
index 0000000..1c407f1
Binary files /dev/null and b/test/trace/conversion-functions-8.swf differ
diff --git a/test/trace/conversion-functions-8.swf.trace b/test/trace/conversion-functions-8.swf.trace
new file mode 100644
index 0000000..51b2b5e
--- /dev/null
+++ b/test/trace/conversion-functions-8.swf.trace
@@ -0,0 +1,448 @@
+valueOf called
+toString called
+toString called with 
+valueOf called with 
+0: valueOf!
+1: valueOf!
+2: valueOf!
+3: valueOf!
+4: valueOf!
+5: valueOf!
+6: valueOf!
+7: valueOf!
+8: valueOf!
+9: valueOf!
+10: valueOf!
+11: valueOf!
+12: valueOf!
+13: valueOf!
+14: valueOf!
+15: valueOf!
+16: valueOf!
+17: valueOf!
+18: valueOf!
+19: valueOf!
+20: valueOf!
+21: valueOf!
+22: valueOf!
+22: toString!
+23: valueOf!
+23: toString!
+24: valueOf!
+24: toString!
+25: valueOf!
+25: toString!
+26: valueOf!
+26: toString!
+27: valueOf!
+27: toString!
+28: valueOf!
+28: toString!
+29: valueOf!
+29: toString!
+(0) undefined (undefined)
+  Boolean: false (boolean)
+  Integer: 0 (number)
+  Number: NaN (number)
+  Object: undefined (object)
+(1) null (null)
+  Boolean: false (boolean)
+  Integer: 0 (number)
+  Number: NaN (number)
+  Object: undefined (object)
+(2) true (boolean)
+  Boolean: true (boolean)
+  Integer: 1 (number)
+  Number: 1 (number)
+  Object: true (object)
+(3) false (boolean)
+  Boolean: false (boolean)
+  Integer: 0 (number)
+  Number: 0 (number)
+  Object: false (object)
+(4) 0 (number)
+  Boolean: false (boolean)
+  Integer: 0 (number)
+  Number: 0 (number)
+  Object: 0 (object)
+(5) 1 (number)
+  Boolean: true (boolean)
+  Integer: 1 (number)
+  Number: 1 (number)
+  Object: 1 (object)
+(6) 0.5 (number)
+  Boolean: true (boolean)
+  Integer: 0 (number)
+  Number: 0.5 (number)
+  Object: 0.5 (object)
+(7) -1 (number)
+  Boolean: true (boolean)
+  Integer: -1 (number)
+  Number: -1 (number)
+  Object: -1 (object)
+(8) -0.5 (number)
+  Boolean: true (boolean)
+  Integer: 0 (number)
+  Number: -0.5 (number)
+  Object: -0.5 (object)
+(9) Infinity (number)
+  Boolean: true (boolean)
+  Integer: 0 (number)
+  Number: Infinity (number)
+  Object: Infinity (object)
+(10) -Infinity (number)
+  Boolean: true (boolean)
+  Integer: 0 (number)
+  Number: -Infinity (number)
+  Object: -Infinity (object)
+(11) NaN (number)
+  Boolean: false (boolean)
+  Integer: 0 (number)
+  Number: NaN (number)
+  Object: NaN (object)
+(12)  (string)
+  Boolean: false (boolean)
+  Integer: 0 (number)
+  Number: NaN (number)
+  Object:  (object)
+(13) 0 (string)
+  Boolean: true (boolean)
+  Integer: 0 (number)
+  Number: 0 (number)
+  Object: 0 (object)
+(14) -0 (string)
+  Boolean: true (boolean)
+  Integer: 0 (number)
+  Number: 0 (number)
+  Object: -0 (object)
+(15) 0.0 (string)
+  Boolean: true (boolean)
+  Integer: 0 (number)
+  Number: 0 (number)
+  Object: 0.0 (object)
+(16) 1 (string)
+  Boolean: true (boolean)
+  Integer: 1 (number)
+  Number: 1 (number)
+  Object: 1 (object)
+(17) Hello World! (string)
+  Boolean: true (boolean)
+  Integer: 0 (number)
+  Number: NaN (number)
+  Object: Hello World! (object)
+(18) true (string)
+  Boolean: true (boolean)
+  Integer: 0 (number)
+  Number: NaN (number)
+  Object: true (object)
+(19) _level0 (string)
+  Boolean: true (boolean)
+  Integer: 0 (number)
+  Number: NaN (number)
+  Object: _level0 (object)
+(20) äöü (string)
+  Boolean: true (boolean)
+  Integer: 0 (number)
+  Number: NaN (number)
+  Object: äöü (object)
+(21) _level0 (movieclip)
+  Boolean: true (boolean)
+  Integer: 0 (number)
+  Number: NaN (number)
+  Object: _level0 (movieclip)
+(22) [object Object] (object)
+  Boolean: true (boolean)
+  Integer: 0 (number)
+  Number: NaN (number)
+  Object: [object Object] (object)
+(23) Fri Apr 13 21:20:24 GMT+0000 1973 (object)
+  Boolean: true (boolean)
+  Integer: 504809296 (number)
+  Number: 103584024400.25 (number)
+  Object: Fri Apr 13 21:20:24 GMT+0000 1973 (object)
+(24)  (object)
+  Boolean: true (boolean)
+  Integer: 0 (number)
+  Number: NaN (number)
+  Object:  (object)
+(25) [type Function] (function)
+  Boolean: true (boolean)
+  Integer: 0 (number)
+  Number: NaN (number)
+  Object: [type Function] (function)
+(26) [type Object] (object)
+  Boolean: true (boolean)
+valueOf called
+  Integer: 0 (number)
+valueOf called
+  Number: NaN (number)
+valueOf called
+toString called
+  Object: [type Object] (object)
+(27) [type Object] (object)
+  Boolean: true (boolean)
+  Integer: 0 (number)
+  Number: NaN (number)
+toString called with 
+  Object: [type Object] (object)
+(28) [object Object] (object)
+  Boolean: true (boolean)
+valueOf called with 
+  Integer: 0 (number)
+valueOf called with 
+  Number: NaN (number)
+valueOf called with 
+  Object: [object Object] (object)
+(29) undefined (object)
+  Boolean: true (boolean)
+  Integer: 0 (number)
+  Number: NaN (number)
+  Object: undefined (object)
+(30) undefined (object)
+  Boolean: true (boolean)
+0: valueOf!
+  Integer: 0 (number)
+0: valueOf!
+  Number: NaN (number)
+0: valueOf!
+  Object: undefined (object)
+(31) null (object)
+  Boolean: true (boolean)
+1: valueOf!
+  Integer: 0 (number)
+1: valueOf!
+  Number: NaN (number)
+1: valueOf!
+  Object: null (object)
+(32) true (object)
+  Boolean: true (boolean)
+2: valueOf!
+  Integer: 1 (number)
+2: valueOf!
+  Number: 1 (number)
+2: valueOf!
+  Object: true (object)
+(33) false (object)
+  Boolean: true (boolean)
+3: valueOf!
+  Integer: 0 (number)
+3: valueOf!
+  Number: 0 (number)
+3: valueOf!
+  Object: false (object)
+(34) 0 (object)
+  Boolean: true (boolean)
+4: valueOf!
+  Integer: 0 (number)
+4: valueOf!
+  Number: 0 (number)
+4: valueOf!
+  Object: 0 (object)
+(35) 1 (object)
+  Boolean: true (boolean)
+5: valueOf!
+  Integer: 1 (number)
+5: valueOf!
+  Number: 1 (number)
+5: valueOf!
+  Object: 1 (object)
+(36) 0.5 (object)
+  Boolean: true (boolean)
+6: valueOf!
+  Integer: 0 (number)
+6: valueOf!
+  Number: 0.5 (number)
+6: valueOf!
+  Object: 0.5 (object)
+(37) -1 (object)
+  Boolean: true (boolean)
+7: valueOf!
+  Integer: -1 (number)
+7: valueOf!
+  Number: -1 (number)
+7: valueOf!
+  Object: -1 (object)
+(38) -0.5 (object)
+  Boolean: true (boolean)
+8: valueOf!
+  Integer: 0 (number)
+8: valueOf!
+  Number: -0.5 (number)
+8: valueOf!
+  Object: -0.5 (object)
+(39) Infinity (object)
+  Boolean: true (boolean)
+9: valueOf!
+  Integer: 0 (number)
+9: valueOf!
+  Number: Infinity (number)
+9: valueOf!
+  Object: Infinity (object)
+(40) -Infinity (object)
+  Boolean: true (boolean)
+10: valueOf!
+  Integer: 0 (number)
+10: valueOf!
+  Number: -Infinity (number)
+10: valueOf!
+  Object: -Infinity (object)
+(41) NaN (object)
+  Boolean: true (boolean)
+11: valueOf!
+  Integer: 0 (number)
+11: valueOf!
+  Number: NaN (number)
+11: valueOf!
+  Object: NaN (object)
+(42)  (object)
+  Boolean: true (boolean)
+12: valueOf!
+  Integer: 0 (number)
+12: valueOf!
+  Number: NaN (number)
+12: valueOf!
+  Object:  (object)
+(43) 0 (object)
+  Boolean: true (boolean)
+13: valueOf!
+  Integer: 0 (number)
+13: valueOf!
+  Number: 0 (number)
+13: valueOf!
+  Object: 0 (object)
+(44) -0 (object)
+  Boolean: true (boolean)
+14: valueOf!
+  Integer: 0 (number)
+14: valueOf!
+  Number: 0 (number)
+14: valueOf!
+  Object: -0 (object)
+(45) 0.0 (object)
+  Boolean: true (boolean)
+15: valueOf!
+  Integer: 0 (number)
+15: valueOf!
+  Number: 0 (number)
+15: valueOf!
+  Object: 0.0 (object)
+(46) 1 (object)
+  Boolean: true (boolean)
+16: valueOf!
+  Integer: 1 (number)
+16: valueOf!
+  Number: 1 (number)
+16: valueOf!
+  Object: 1 (object)
+(47) Hello World! (object)
+  Boolean: true (boolean)
+17: valueOf!
+  Integer: 0 (number)
+17: valueOf!
+  Number: NaN (number)
+17: valueOf!
+  Object: Hello World! (object)
+(48) true (object)
+  Boolean: true (boolean)
+18: valueOf!
+  Integer: 0 (number)
+18: valueOf!
+  Number: NaN (number)
+18: valueOf!
+  Object: true (object)
+(49) _level0 (object)
+  Boolean: true (boolean)
+19: valueOf!
+  Integer: 0 (number)
+19: valueOf!
+  Number: NaN (number)
+19: valueOf!
+  Object: _level0 (object)
+(50) äöü (object)
+  Boolean: true (boolean)
+20: valueOf!
+  Integer: 0 (number)
+20: valueOf!
+  Number: NaN (number)
+20: valueOf!
+  Object: äöü (object)
+(51) _level0 (object)
+  Boolean: true (boolean)
+21: valueOf!
+  Integer: 0 (number)
+21: valueOf!
+  Number: NaN (number)
+21: valueOf!
+  Object: _level0 (object)
+(52) [type Object] (object)
+  Boolean: true (boolean)
+22: valueOf!
+  Integer: 0 (number)
+22: valueOf!
+  Number: NaN (number)
+22: valueOf!
+22: toString!
+  Object: [type Object] (object)
+(53) [type Object] (object)
+  Boolean: true (boolean)
+23: valueOf!
+  Integer: 0 (number)
+23: valueOf!
+  Number: NaN (number)
+23: valueOf!
+23: toString!
+  Object: [type Object] (object)
+(54) [type Object] (object)
+  Boolean: true (boolean)
+24: valueOf!
+  Integer: 0 (number)
+24: valueOf!
+  Number: NaN (number)
+24: valueOf!
+24: toString!
+  Object: [type Object] (object)
+(55) [type Object] (object)
+  Boolean: true (boolean)
+25: valueOf!
+  Integer: 0 (number)
+25: valueOf!
+  Number: NaN (number)
+25: valueOf!
+25: toString!
+  Object: [type Object] (object)
+(56) [type Object] (object)
+  Boolean: true (boolean)
+26: valueOf!
+  Integer: 0 (number)
+26: valueOf!
+  Number: NaN (number)
+26: valueOf!
+26: toString!
+  Object: [type Object] (object)
+(57) [type Object] (object)
+  Boolean: true (boolean)
+27: valueOf!
+  Integer: 0 (number)
+27: valueOf!
+  Number: NaN (number)
+27: valueOf!
+27: toString!
+  Object: [type Object] (object)
+(58) [type Object] (object)
+  Boolean: true (boolean)
+28: valueOf!
+  Integer: 0 (number)
+28: valueOf!
+  Number: NaN (number)
+28: valueOf!
+28: toString!
+  Object: [type Object] (object)
+(59) [type Object] (object)
+  Boolean: true (boolean)
+29: valueOf!
+  Integer: 0 (number)
+29: valueOf!
+  Number: NaN (number)
+29: valueOf!
+29: toString!
+  Object: [type Object] (object)
diff --git a/test/trace/conversion-functions.as b/test/trace/conversion-functions.as
new file mode 100644
index 0000000..faf40c3
--- /dev/null
+++ b/test/trace/conversion-functions.as
@@ -0,0 +1,17 @@
+// makeswf -v 7 -s 200x150 -r 1 -o conversion-functions.swf conversion-functions.as
+
+#include "values.as"
+
+for (i = 0; i < values.length; i++) {
+  trace (names[i]);
+  x = Boolean (values[i]);
+  trace ("  Boolean: " + x + " (" + typeof (x) + ")");
+  x = int (values[i]);
+  trace ("  Integer: " + x + " (" + typeof (x) + ")");
+  x = Number (values[i]);
+  trace ("  Number: " + x + " (" + typeof (x) + ")");
+  x = Object(values[i]);
+  trace ("  Object: " + x + " (" + typeof (x) + ")");
+}
+
+getURL ("fscommand:quit", "");
commit 6eaa8eaee1becae183d7bd76e24145be0fd877cb
Author: Benjamin Otte <otte at gnome.org>
Date:   Mon Nov 3 16:23:19 2008 +0100

    add various tests that appeared during refactoring

diff --git a/test/trace/Makefile.am b/test/trace/Makefile.am
index bd8c091..7e7761a 100644
--- a/test/trace/Makefile.am
+++ b/test/trace/Makefile.am
@@ -4353,6 +4353,15 @@ EXTRA_DIST = \
 	utf-32-be-bom.txt \
 	utf-32-le-bom.txt \
 	values.as \
+	various-tests-5.swf \
+	various-tests-5.swf.trace \
+	various-tests-6.swf \
+	various-tests-6.swf.trace \
+	various-tests-7.swf \
+	various-tests-7.swf.trace \
+	various-tests-8.swf \
+	various-tests-8.swf.trace \
+	various-tests.as \
 	version4-global.sc \
 	version4-global.swf \
 	version4-global.swf.trace \
diff --git a/test/trace/various-tests-5.swf b/test/trace/various-tests-5.swf
new file mode 100644
index 0000000..83a0e46
Binary files /dev/null and b/test/trace/various-tests-5.swf differ
diff --git a/test/trace/various-tests-5.swf.trace b/test/trace/various-tests-5.swf.trace
new file mode 100644
index 0000000..111d27d
--- /dev/null
+++ b/test/trace/various-tests-5.swf.trace
@@ -0,0 +1,22 @@
+undefined
+undefined
+undefined
+undefined
+false
+undefined
+undefined
+undefined
+50
+[object Object]
+[type Object]
+toString
+42
+toString
+/
+/
+0
+0
+/
+42
+42
+[type Object]
diff --git a/test/trace/various-tests-6.swf b/test/trace/various-tests-6.swf
new file mode 100644
index 0000000..5ae66ad
Binary files /dev/null and b/test/trace/various-tests-6.swf differ
diff --git a/test/trace/various-tests-6.swf.trace b/test/trace/various-tests-6.swf.trace
new file mode 100644
index 0000000..c699cde
--- /dev/null
+++ b/test/trace/various-tests-6.swf.trace
@@ -0,0 +1,25 @@
+foo
+undefined
+_level0.a
+undefined
+undefined
+false
+1
+2
+3
+50
+[object Object]
+[type Object]
+toString
+42
+toString
+/b/b
+/
+0
+0
+/
+42
+42
+[type Object]
+not quitting, HAHA
+quitting
diff --git a/test/trace/various-tests-7.swf b/test/trace/various-tests-7.swf
new file mode 100644
index 0000000..25a15fc
Binary files /dev/null and b/test/trace/various-tests-7.swf differ
diff --git a/test/trace/various-tests-7.swf.trace b/test/trace/various-tests-7.swf.trace
new file mode 100644
index 0000000..c699cde
--- /dev/null
+++ b/test/trace/various-tests-7.swf.trace
@@ -0,0 +1,25 @@
+foo
+undefined
+_level0.a
+undefined
+undefined
+false
+1
+2
+3
+50
+[object Object]
+[type Object]
+toString
+42
+toString
+/b/b
+/
+0
+0
+/
+42
+42
+[type Object]
+not quitting, HAHA
+quitting
diff --git a/test/trace/various-tests-8.swf b/test/trace/various-tests-8.swf
new file mode 100644
index 0000000..15591c1
Binary files /dev/null and b/test/trace/various-tests-8.swf differ
diff --git a/test/trace/various-tests-8.swf.trace b/test/trace/various-tests-8.swf.trace
new file mode 100644
index 0000000..7176563
--- /dev/null
+++ b/test/trace/various-tests-8.swf.trace
@@ -0,0 +1,25 @@
+foo
+undefined
+_level0.a
+undefined
+(a=1, b=0, c=0, d=1, tx=0, ty=0)
+false
+1
+2
+3
+50
+[object Object]
+[type Object]
+toString
+42
+toString
+/b/b
+/
+0
+0
+/
+42
+42
+[type Object]
+not quitting, HAHA
+quitting
diff --git a/test/trace/various-tests.as b/test/trace/various-tests.as
new file mode 100644
index 0000000..80de246
--- /dev/null
+++ b/test/trace/various-tests.as
@@ -0,0 +1,117 @@
+// makeswf -v 7 -s 200x150 -r 1 -o various-tests.swf various-tests.as
+
+/* check if ASBroadcaster requires an Array in _listeners */
+o = {};
+AsBroadcaster.initialize (o);
+o._listeners = this;
+this.length = 1;
+this[0] = { foo: function () { trace ("foo"); } };
+o.broadcastMessage ("foo");
+
+
+/* check if Transform works on dead matrices */
+createEmptyMovieClip ("a", 0);
+no = a;
+a.removeMovieClip ();
+t = new flash.geom.Transform (no);
+trace (t.matrix);
+createEmptyMovieClip ("a", 0);
+trace (no);
+trace (t.matrix);
+t = new flash.geom.Transform (no);
+trace (t.matrix);
+delete t;
+
+
+/* check if objects are equal that return the same thing from valueOf */
+x = { valueOf: function () { return o; } };
+y = { valueOf: function () { return o; } };
+trace (x == y);
+
+
+/* check if setInterval works with deleted (and recreated) movies */
+createEmptyMovieClip ("a", 1000);
+trace (setInterval (no, "quit", 500));
+a.removeMovieClip ();
+trace (setInterval (no, "quit2", 500));
+createEmptyMovieClip ("a", 1000);
+a.quit = function () {
+  trace ("not quitting, HAHA");
+  getURL ("fscommand:quit", "");
+};
+a.quit2 = function () {
+  trace ("quitting");
+  getURL ("fscommand:quit", "");
+};
+
+createEmptyMovieClip ("b", 1);
+b.trace = function () { trace ("hello"); };
+trace (setInterval (b, "trace", 500));
+b.removeMovieClip ();
+
+
+/* check if Color.setTransform works with all types of objects */
+this.aa = 50;
+c = new Color (this);
+c.setTransform (this);
+trace (_alpha);
+
+
+/* check what undefined does as argument to Object */
+trace (new Object (undefined));
+trace (Object (undefined));
+
+
+/* check when setMember action calls [[ToName]] */
+o.toString = function () { trace ("toString"); return "x"; };
+asm {
+  push "o"
+  getvariable
+  dup
+  push 42
+  setmember
+};
+trace (o.x);
+asm {
+  push 42, "o"
+  getvariable
+  push 42
+  setmember
+};
+
+
+/* check what deleting the target does */
+createEmptyMovieClip ("b", 0);
+b.createEmptyMovieClip ("b", 0);
+setTarget ("b.b");
+trace (_target);
+_parent.removeMovieClip ();
+trace (_target);
+
+
+/* check what Number does without args */
+trace (new Number ());
+trace (Number ());
+
+
+/* check what object functions are set on upon declaration */
+createEmptyMovieClip ("b", 0);
+setTarget ("b");
+function f () { trace (_target); };
+setTarget ("");
+f();
+a.f();
+
+
+/* check if native functions get executed when run as constructor */
+x = new Array.prototype.push (42);
+trace (x[0]);
+
+
+/* check something with var (what was this supposed to be about?) */
+function test () {
+  var x = 42;
+  trace (x);
+}
+test ();
+trace (x);


More information about the Swfdec-commits mailing list