[Swfdec-commits] 5 commits - swfdec/swfdec_amf.c swfdec/swfdec_as_array.c swfdec/swfdec_asbroadcaster.c swfdec/swfdec_as_context.c swfdec/swfdec_as_date.c swfdec/swfdec_as_frame.c swfdec/swfdec_as_function.c swfdec/swfdec_as_interpret.c swfdec/swfdec_as_native_function.c swfdec/swfdec_as_number.c swfdec/swfdec_as_object.c swfdec/swfdec_as_relay.c swfdec/swfdec_as_script_function.c swfdec/swfdec_as_string.c swfdec/swfdec_as_super.c swfdec/swfdec_as_types.c swfdec/swfdec_as_types.h swfdec/swfdec_bitmap_data.c swfdec/swfdec_color_as.c swfdec/swfdec_external_interface.c swfdec/swfdec_file_reference.c swfdec/swfdec_interval.c swfdec/swfdec_load_object_as.c swfdec/swfdec_loadvars_as.c swfdec/swfdec_movie_as_drawing.c swfdec/swfdec_movie_asprops.c swfdec/swfdec_movie.c swfdec/swfdec_net_connection.c swfdec/swfdec_net_stream_as.c swfdec/swfdec_net_stream.c swfdec/swfdec_player_as.c swfdec/swfdec_player.c swfdec/swfdec_print_job.c swfdec/swfdec_resource.c swfdec/swfdec_sound_object.c swfdec/swfdec_sprite_movie_as.c swfdec/swfdec_stage_as.c swfdec/swfdec_style_sheet.c swfdec/swfdec_system_as.c swfdec/swfdec_text_field_movie_as.c swfdec/swfdec_text_field_movie.c swfdec/swfdec_text_format.c swfdec/swfdec_transform_as.c swfdec/swfdec_video_movie_as.c swfdec/swfdec_xml.c swfdec/swfdec_xml_node.c test/swfdec_test_buffer.c test/swfdec_test.c

Benjamin Otte company at kemper.freedesktop.org
Thu Nov 6 03:00:31 PST 2008


 swfdec/swfdec_amf.c                 |    2 
 swfdec/swfdec_as_array.c            |   52 +++----
 swfdec/swfdec_as_context.c          |   45 ++++--
 swfdec/swfdec_as_date.c             |    8 -
 swfdec/swfdec_as_frame.c            |    2 
 swfdec/swfdec_as_function.c         |    4 
 swfdec/swfdec_as_interpret.c        |  256 ++++++++++++++++++------------------
 swfdec/swfdec_as_native_function.c  |    6 
 swfdec/swfdec_as_number.c           |    2 
 swfdec/swfdec_as_object.c           |   77 ++++------
 swfdec/swfdec_as_relay.c            |    4 
 swfdec/swfdec_as_script_function.c  |    6 
 swfdec/swfdec_as_string.c           |   24 +--
 swfdec/swfdec_as_super.c            |    4 
 swfdec/swfdec_as_types.c            |   40 ++---
 swfdec/swfdec_as_types.h            |    9 -
 swfdec/swfdec_asbroadcaster.c       |    6 
 swfdec/swfdec_bitmap_data.c         |    4 
 swfdec/swfdec_color_as.c            |    8 -
 swfdec/swfdec_external_interface.c  |   30 +---
 swfdec/swfdec_file_reference.c      |    4 
 swfdec/swfdec_interval.c            |    2 
 swfdec/swfdec_load_object_as.c      |   18 +-
 swfdec/swfdec_loadvars_as.c         |    2 
 swfdec/swfdec_movie.c               |    4 
 swfdec/swfdec_movie_as_drawing.c    |   12 -
 swfdec/swfdec_movie_asprops.c       |    6 
 swfdec/swfdec_net_connection.c      |    8 -
 swfdec/swfdec_net_stream.c          |    6 
 swfdec/swfdec_net_stream_as.c       |    8 -
 swfdec/swfdec_player.c              |    8 -
 swfdec/swfdec_player_as.c           |   10 -
 swfdec/swfdec_print_job.c           |    8 -
 swfdec/swfdec_resource.c            |   64 ++++-----
 swfdec/swfdec_sound_object.c        |    4 
 swfdec/swfdec_sprite_movie_as.c     |   44 +++---
 swfdec/swfdec_stage_as.c            |    9 -
 swfdec/swfdec_style_sheet.c         |    6 
 swfdec/swfdec_system_as.c           |   16 +-
 swfdec/swfdec_text_field_movie.c    |    4 
 swfdec/swfdec_text_field_movie_as.c |   36 ++---
 swfdec/swfdec_text_format.c         |   62 ++++----
 swfdec/swfdec_transform_as.c        |    2 
 swfdec/swfdec_video_movie_as.c      |    8 -
 swfdec/swfdec_xml.c                 |   35 ++--
 swfdec/swfdec_xml_node.c            |   30 ++--
 test/swfdec_test.c                  |    2 
 test/swfdec_test_buffer.c           |    8 -
 48 files changed, 506 insertions(+), 509 deletions(-)

New commits:
commit c239d1f1725cf1e362dd7b51ad46e5759d0e2714
Author: Benjamin Otte <otte at gnome.org>
Date:   Thu Nov 6 11:59:28 2008 +0100

    remove "*&val" references
    
    They were added by automatic macro conversions

diff --git a/swfdec/swfdec_amf.c b/swfdec/swfdec_amf.c
index 1160719..249a693 100644
--- a/swfdec/swfdec_amf.c
+++ b/swfdec/swfdec_amf.c
@@ -70,7 +70,7 @@ swfdec_amf_parse_properties (SwfdecAsContext *context, SwfdecBits *bits, SwfdecA
 
     if (!swfdec_amf_parse_string (context, bits, &val))
       return FALSE;
-    name = SWFDEC_AS_VALUE_GET_STRING (*&val);
+    name = SWFDEC_AS_VALUE_GET_STRING (val);
     type = swfdec_bits_get_u8 (bits);
     if (type == SWFDEC_AMF_END_OBJECT)
       break;
diff --git a/swfdec/swfdec_as_array.c b/swfdec/swfdec_as_array.c
index a268a5b..e1a42e9 100644
--- a/swfdec/swfdec_as_array.c
+++ b/swfdec/swfdec_as_array.c
@@ -721,11 +721,11 @@ swfdec_as_array_concat (SwfdecAsContext *cx, SwfdecAsObject *object,
   swfdec_as_array_append_array (array_new, object);
 
   for (j = 0; j < argc; j++) {
-    if (SWFDEC_AS_VALUE_IS_OBJECT (*&argv[j]) &&
-	SWFDEC_AS_VALUE_GET_OBJECT (*&argv[j])->array)
+    if (SWFDEC_AS_VALUE_IS_OBJECT (argv[j]) &&
+	SWFDEC_AS_VALUE_GET_OBJECT (argv[j])->array)
     {
       swfdec_as_array_append_array (array_new,
-	  SWFDEC_AS_VALUE_GET_OBJECT (*&argv[j]));
+	  SWFDEC_AS_VALUE_GET_OBJECT (argv[j]));
     }
     else
     {
@@ -1172,11 +1172,11 @@ swfdec_as_array_sort (SwfdecAsContext *cx, SwfdecAsObject *object, guint argc,
 
   pos = 0;
 
-  if (argc > pos && !SWFDEC_AS_VALUE_IS_NUMBER (*&argv[pos])) {
+  if (argc > pos && !SWFDEC_AS_VALUE_IS_NUMBER (argv[pos])) {
     SwfdecAsFunction *fun;
-    if (!SWFDEC_AS_VALUE_IS_OBJECT (*&argv[pos]) ||
+    if (!SWFDEC_AS_VALUE_IS_OBJECT (argv[pos]) ||
 	!SWFDEC_IS_AS_FUNCTION (
-	  fun = (SwfdecAsFunction *) SWFDEC_AS_VALUE_GET_OBJECT (*&argv[pos])->relay))
+	  fun = (SwfdecAsFunction *) SWFDEC_AS_VALUE_GET_OBJECT (argv[pos])->relay))
 	return;
     custom_function = fun;
     pos++;
@@ -1210,9 +1210,9 @@ swfdec_as_array_sortOn (SwfdecAsContext *cx, SwfdecAsObject *object,
   if (argc < 1)
     return;
 
-  if (SWFDEC_AS_VALUE_IS_OBJECT (*&argv[0])) {
+  if (SWFDEC_AS_VALUE_IS_OBJECT (argv[0])) {
 
-    array = SWFDEC_AS_VALUE_GET_OBJECT (*&argv[0]);
+    array = SWFDEC_AS_VALUE_GET_OBJECT (argv[0]);
     if (!array->array) {
       SWFDEC_AS_VALUE_SET_OBJECT (ret, object);
       return;
@@ -1232,7 +1232,7 @@ swfdec_as_array_sortOn (SwfdecAsContext *cx, SwfdecAsObject *object,
 
     fields[i] = NULL;
   } else {
-    if (SWFDEC_AS_VALUE_IS_MOVIE (*&argv[0])) {
+    if (SWFDEC_AS_VALUE_IS_MOVIE (argv[0])) {
       SWFDEC_FIXME ("how do we treat movies here?");
     }
     num_fields = 1;
@@ -1244,8 +1244,8 @@ swfdec_as_array_sortOn (SwfdecAsContext *cx, SwfdecAsObject *object,
   options = g_new0 (SortOption, num_fields);
 
   if (argc > 1) {
-    if (SWFDEC_AS_VALUE_IS_OBJECT (*&argv[1])) {
-      array = SWFDEC_AS_VALUE_GET_OBJECT (*&argv[1]);
+    if (SWFDEC_AS_VALUE_IS_OBJECT (argv[1])) {
+      array = SWFDEC_AS_VALUE_GET_OBJECT (argv[1]);
 
       if (array->array &&
 	swfdec_as_array_get_length (array) == num_fields) {
@@ -1284,7 +1284,7 @@ swfdec_as_array_construct (SwfdecAsContext *cx, SwfdecAsObject *object,
   swfdec_as_object_set_relay (object, NULL);
   object->array = TRUE;
 
-  if (argc == 1 && SWFDEC_AS_VALUE_IS_NUMBER (*&argv[0])) {
+  if (argc == 1 && SWFDEC_AS_VALUE_IS_NUMBER (argv[0])) {
     int l = swfdec_as_value_to_integer (cx, &argv[0]);
     swfdec_as_array_set_length (object, l < 0 ? 0 : l);
   } else if (argc > 0) {
diff --git a/swfdec/swfdec_as_context.c b/swfdec/swfdec_as_context.c
index 0bead1e..011c99d 100644
--- a/swfdec/swfdec_as_context.c
+++ b/swfdec/swfdec_as_context.c
@@ -1082,9 +1082,9 @@ swfdec_as_context_ASSetPropFlags (SwfdecAsContext *cx, SwfdecAsObject *object,
   if (argc < 3)
     return;
 
-  if (!SWFDEC_AS_VALUE_IS_COMPOSITE (*&argv[0]))
+  if (!SWFDEC_AS_VALUE_IS_COMPOSITE (argv[0]))
     return;
-  obj = SWFDEC_AS_VALUE_GET_COMPOSITE (*&argv[0]);
+  obj = SWFDEC_AS_VALUE_GET_COMPOSITE (argv[0]);
   flags[0] = swfdec_as_value_to_integer (cx, &argv[2]);
   flags[1] = (argc > 3) ? swfdec_as_value_to_integer (cx, &argv[3]) : 0;
 
@@ -1094,7 +1094,7 @@ swfdec_as_context_ASSetPropFlags (SwfdecAsContext *cx, SwfdecAsObject *object,
     return;
   }
 
-  if (SWFDEC_AS_VALUE_IS_NULL (*&argv[1])) {
+  if (SWFDEC_AS_VALUE_IS_NULL (argv[1])) {
     swfdec_as_object_foreach (obj, swfdec_as_context_ASSetPropFlags_foreach, flags);
   } else {
     char **split =
diff --git a/swfdec/swfdec_as_date.c b/swfdec/swfdec_as_date.c
index cd621ba..be5263a 100644
--- a/swfdec/swfdec_as_date.c
+++ b/swfdec/swfdec_as_date.c
@@ -763,7 +763,7 @@ swfdec_as_date_setTime (SwfdecAsContext *cx, SwfdecAsObject *object,
   SWFDEC_AS_CHECK (SWFDEC_TYPE_AS_DATE, &date, "");
 
   if (argc > 0 &&
-      (cx->version > 6 || !SWFDEC_AS_VALUE_IS_UNDEFINED (*&argv[0]))) {
+      (cx->version > 6 || !SWFDEC_AS_VALUE_IS_UNDEFINED (argv[0]))) {
     d = swfdec_as_value_to_number (cx, &argv[0]);
   } else {
     d = NAN;
@@ -950,7 +950,7 @@ swfdec_as_date_UTC (SwfdecAsContext *cx, SwfdecAsObject *object, guint argc,
 
   // special case: ignore undefined and everything after it
   for (i = 0; i < argc; i++) {
-    if (SWFDEC_AS_VALUE_IS_UNDEFINED (*&argv[i])) {
+    if (SWFDEC_AS_VALUE_IS_UNDEFINED (argv[i])) {
       argc = i;
       break;
     }
@@ -1076,7 +1076,7 @@ swfdec_as_date_construct (SwfdecAsContext *cx, SwfdecAsObject *object,
 
   // special case: ignore undefined and everything after it
   for (i = 0; i < argc; i++) {
-    if (SWFDEC_AS_VALUE_IS_UNDEFINED (*&argv[i])) {
+    if (SWFDEC_AS_VALUE_IS_UNDEFINED (argv[i])) {
       argc = i;
       break;
     }
diff --git a/swfdec/swfdec_as_frame.c b/swfdec/swfdec_as_frame.c
index bde7afd..5af4369 100644
--- a/swfdec/swfdec_as_frame.c
+++ b/swfdec/swfdec_as_frame.c
@@ -341,7 +341,7 @@ void
 swfdec_as_frame_set_this (SwfdecAsFrame *frame, SwfdecAsObject *thisp)
 {
   g_return_if_fail (frame != NULL);
-  g_return_if_fail (SWFDEC_AS_VALUE_IS_UNDEFINED (*&frame->thisp));
+  g_return_if_fail (SWFDEC_AS_VALUE_IS_UNDEFINED (frame->thisp));
   g_return_if_fail (thisp != NULL);
 
   g_assert (!SWFDEC_IS_AS_SUPER (thisp));
diff --git a/swfdec/swfdec_as_function.c b/swfdec/swfdec_as_function.c
index ad1b35f..45fb7bb 100644
--- a/swfdec/swfdec_as_function.c
+++ b/swfdec/swfdec_as_function.c
@@ -138,12 +138,12 @@ swfdec_as_function_apply (SwfdecAsContext *cx, SwfdecAsObject *object,
   if (thisp == NULL)
     thisp = swfdec_as_object_new_empty (cx);
 
-  if (argc > 1 && SWFDEC_AS_VALUE_IS_COMPOSITE (*&argv[1])) {
+  if (argc > 1 && SWFDEC_AS_VALUE_IS_COMPOSITE (argv[1])) {
     int i;
     SwfdecAsObject *array;
     SwfdecAsValue val;
 
-    array = SWFDEC_AS_VALUE_GET_COMPOSITE (*&argv[1]);
+    array = SWFDEC_AS_VALUE_GET_COMPOSITE (argv[1]);
 
     swfdec_as_object_get_variable (array, SWFDEC_AS_STR_length, &val);
     length = swfdec_as_value_to_integer (cx, &val);
diff --git a/swfdec/swfdec_as_interpret.c b/swfdec/swfdec_as_interpret.c
index 0d2f55c..dcf0dbb 100644
--- a/swfdec/swfdec_as_interpret.c
+++ b/swfdec/swfdec_as_interpret.c
@@ -419,9 +419,9 @@ super_special_movie_lookup_magic (SwfdecAsContext *cx, SwfdecAsObject *o, const
   }
   if (!swfdec_as_object_get_variable (o, name, &val))
     return NULL;
-  if (!SWFDEC_AS_VALUE_IS_COMPOSITE (*&val))
+  if (!SWFDEC_AS_VALUE_IS_COMPOSITE (val))
     return NULL;
-  return SWFDEC_AS_VALUE_GET_COMPOSITE (*&val);
+  return SWFDEC_AS_VALUE_GET_COMPOSITE (val);
 }
 
 static SwfdecAsObject *
@@ -981,10 +981,10 @@ swfdec_action_add2 (SwfdecAsContext *cx, guint action, const guint8 *data, guint
   rtmp = *rval;
   ltmp = *lval;
   swfdec_action_add2_to_primitive (&rtmp);
-  if (!SWFDEC_AS_VALUE_IS_OBJECT (*&rtmp))
+  if (!SWFDEC_AS_VALUE_IS_OBJECT (rtmp))
     rval = &rtmp;
   swfdec_action_add2_to_primitive (&ltmp);
-  if (!SWFDEC_AS_VALUE_IS_OBJECT (*&ltmp))
+  if (!SWFDEC_AS_VALUE_IS_OBJECT (ltmp))
     lval = &ltmp;
 
   if (SWFDEC_AS_VALUE_IS_STRING (*lval) || SWFDEC_AS_VALUE_IS_STRING (*rval)) {
@@ -1427,7 +1427,7 @@ swfdec_action_equals2_5 (SwfdecAsContext *cx, guint action, const guint8 *data,
   ltype = SWFDEC_AS_VALUE_GET_TYPE (ltmp);
   rtype = SWFDEC_AS_VALUE_GET_TYPE (rtmp);
   
-  if (SWFDEC_AS_VALUE_IS_COMPOSITE (*&ltmp) && SWFDEC_AS_VALUE_IS_COMPOSITE (*&rtmp)) {
+  if (SWFDEC_AS_VALUE_IS_COMPOSITE (ltmp) && SWFDEC_AS_VALUE_IS_COMPOSITE (rtmp)) {
     /* get movies compared */
     if (ltype == SWFDEC_AS_TYPE_MOVIE) {
       if (rtype == SWFDEC_AS_TYPE_MOVIE) {
@@ -1436,13 +1436,13 @@ swfdec_action_equals2_5 (SwfdecAsContext *cx, guint action, const guint8 *data,
 	swfdec_as_value_to_primitive (rval);
       }
       cond = SWFDEC_AS_VALUE_IS_MOVIE (*rval) && 
-	SWFDEC_AS_VALUE_GET_MOVIE (*&ltmp) == SWFDEC_AS_VALUE_GET_MOVIE (*rval);
+	SWFDEC_AS_VALUE_GET_MOVIE (ltmp) == SWFDEC_AS_VALUE_GET_MOVIE (*rval);
       goto out;
     }
     if (rtype == SWFDEC_AS_TYPE_MOVIE) {
       swfdec_as_value_to_primitive (lval);
       cond = SWFDEC_AS_VALUE_IS_MOVIE (*lval) && 
-	SWFDEC_AS_VALUE_GET_MOVIE (*&rtmp) == SWFDEC_AS_VALUE_GET_MOVIE (*lval);
+	SWFDEC_AS_VALUE_GET_MOVIE (rtmp) == SWFDEC_AS_VALUE_GET_MOVIE (*lval);
       goto out;
     }
 
@@ -1452,17 +1452,17 @@ swfdec_action_equals2_5 (SwfdecAsContext *cx, guint action, const guint8 *data,
 
   /* compare strings */
   if (ltype == SWFDEC_AS_TYPE_STRING && rtype == SWFDEC_AS_TYPE_STRING) {
-    cond = SWFDEC_AS_VALUE_GET_STRING (*&ltmp) == SWFDEC_AS_VALUE_GET_STRING (*&rtmp);
+    cond = SWFDEC_AS_VALUE_GET_STRING (ltmp) == SWFDEC_AS_VALUE_GET_STRING (rtmp);
     goto out;
   }
 
   /* convert to numbers */
-  if (SWFDEC_AS_VALUE_IS_OBJECT (*&ltmp)) {
+  if (SWFDEC_AS_VALUE_IS_OBJECT (ltmp)) {
     l = swfdec_as_value_to_number (cx, lval);
   } else {
     l = swfdec_as_value_to_number (cx, &ltmp);
   }
-  if (SWFDEC_AS_VALUE_IS_OBJECT (*&rtmp)) {
+  if (SWFDEC_AS_VALUE_IS_OBJECT (rtmp)) {
     r = swfdec_as_value_to_number (cx, rval);
   } else {
     r = swfdec_as_value_to_number (cx, &rtmp);
@@ -2171,7 +2171,7 @@ swfdec_action_type_of (SwfdecAsContext *cx, guint action, const guint8 *data, gu
       break;
     case SWFDEC_AS_TYPE_OBJECT:
       {
-	SwfdecAsObject *obj = SWFDEC_AS_VALUE_GET_OBJECT (*&val);
+	SwfdecAsObject *obj = SWFDEC_AS_VALUE_GET_OBJECT (val);
 	if (SWFDEC_IS_AS_FUNCTION (obj->relay)) {
 	  type = SWFDEC_AS_STR_function;
 	} else {
@@ -2181,7 +2181,7 @@ swfdec_action_type_of (SwfdecAsContext *cx, guint action, const guint8 *data, gu
       break;
     case SWFDEC_AS_TYPE_MOVIE:
       {
-	SwfdecMovie *movie = SWFDEC_AS_VALUE_GET_MOVIE (*&val);
+	SwfdecMovie *movie = SWFDEC_AS_VALUE_GET_MOVIE (val);
 	if (SWFDEC_IS_TEXT_FIELD_MOVIE (movie) &&
 	    movie->state == SWFDEC_MOVIE_STATE_RUNNING) {
 	  type = SWFDEC_AS_STR_object;
@@ -2227,9 +2227,9 @@ swfdec_action_is_instance_of (SwfdecAsObject *object,
 
   // FIXME: propflag tests are wrong, and we shouldn't get __proto__.prototype
   swfdec_as_object_get_variable (constructor, SWFDEC_AS_STR_prototype, &val);
-  if (!SWFDEC_AS_VALUE_IS_OBJECT (*&val))
+  if (!SWFDEC_AS_VALUE_IS_OBJECT (val))
     return FALSE;
-  prototype = SWFDEC_AS_VALUE_GET_OBJECT (*&val);
+  prototype = SWFDEC_AS_VALUE_GET_OBJECT (val);
 
   class = object;
   while ((class = swfdec_as_object_get_prototype (class)) != NULL) {
diff --git a/swfdec/swfdec_as_native_function.c b/swfdec/swfdec_as_native_function.c
index e3f8ec3..7a1684d 100644
--- a/swfdec/swfdec_as_native_function.c
+++ b/swfdec/swfdec_as_native_function.c
@@ -339,8 +339,8 @@ swfdec_as_native_function_checkv (SwfdecAsContext *cx, SwfdecAsObject *object,
 	{
 	  SwfdecMovie *m;
 	  SwfdecMovie **arg = va_arg (varargs, SwfdecMovie **);
-	  if (SWFDEC_AS_VALUE_IS_MOVIE (*&argv[i])) {
-	    m = SWFDEC_AS_VALUE_GET_MOVIE (*&argv[i]);
+	  if (SWFDEC_AS_VALUE_IS_MOVIE (argv[i])) {
+	    m = SWFDEC_AS_VALUE_GET_MOVIE (argv[i]);
 	  } else {
 	    m = NULL;
 	  }
diff --git a/swfdec/swfdec_as_object.c b/swfdec/swfdec_as_object.c
index 2be0fc5..3229abf 100644
--- a/swfdec/swfdec_as_object.c
+++ b/swfdec/swfdec_as_object.c
@@ -922,7 +922,7 @@ swfdec_as_object_get_variable_and_flags (SwfdecAsObject *object,
     if (resolve == NULL) {
       var = swfdec_as_object_hash_lookup (cur, SWFDEC_AS_STR___resolve);
 
-      if (var != NULL && (context->version <= 6 || SWFDEC_AS_VALUE_IS_COMPOSITE (*&var->value)))
+      if (var != NULL && (context->version <= 6 || SWFDEC_AS_VALUE_IS_COMPOSITE (var->value)))
 	resolve = cur;
     }
     cur = swfdec_as_object_get_prototype_internal (cur);
@@ -945,9 +945,9 @@ swfdec_as_object_get_variable_and_flags (SwfdecAsObject *object,
 
     var = swfdec_as_object_hash_lookup (resolve, SWFDEC_AS_STR___resolve);
     g_assert (var != NULL);
-    if (!SWFDEC_AS_VALUE_IS_OBJECT (*&var->value))
+    if (!SWFDEC_AS_VALUE_IS_OBJECT (var->value))
       return FALSE;
-    fun = (SwfdecAsFunction *) (SWFDEC_AS_VALUE_GET_OBJECT (*&var->value)->relay);
+    fun = (SwfdecAsFunction *) (SWFDEC_AS_VALUE_GET_OBJECT (var->value)->relay);
     if (!SWFDEC_IS_AS_FUNCTION (fun))
       return FALSE;
     SWFDEC_AS_VALUE_SET_STRING (&argv, variable);
@@ -1250,9 +1250,9 @@ swfdec_as_object_call (SwfdecAsObject *object, const char *name, guint argc,
   if (return_value)
     SWFDEC_AS_VALUE_SET_UNDEFINED (return_value);
   swfdec_as_object_get_variable (object, name, &tmp);
-  if (!SWFDEC_AS_VALUE_IS_OBJECT (*&tmp))
+  if (!SWFDEC_AS_VALUE_IS_OBJECT (tmp))
     return FALSE;
-  fun = (SwfdecAsFunction *) SWFDEC_AS_VALUE_GET_OBJECT (*&tmp)->relay;
+  fun = (SwfdecAsFunction *) SWFDEC_AS_VALUE_GET_OBJECT (tmp)->relay;
   if (!SWFDEC_IS_AS_FUNCTION (fun))
     return FALSE;
   swfdec_as_function_call (fun, object, argc, argv, return_value ? return_value : &tmp);
@@ -1445,14 +1445,14 @@ swfdec_as_object_addProperty (SwfdecAsContext *cx, SwfdecAsObject *object,
   if (argc < 3)
     return;
   name = swfdec_as_value_to_string (cx, argv[0]);
-  if (!SWFDEC_AS_VALUE_IS_OBJECT (*&argv[1]) ||
-      !SWFDEC_IS_AS_FUNCTION ((get = (SwfdecAsFunction *) (SWFDEC_AS_VALUE_GET_OBJECT (*&argv[1])->relay))))
+  if (!SWFDEC_AS_VALUE_IS_OBJECT (argv[1]) ||
+      !SWFDEC_IS_AS_FUNCTION ((get = (SwfdecAsFunction *) (SWFDEC_AS_VALUE_GET_OBJECT (argv[1])->relay))))
     return;
-  if (SWFDEC_AS_VALUE_IS_OBJECT (*&argv[2])) {
-    set = (SwfdecAsFunction *) (SWFDEC_AS_VALUE_GET_OBJECT (*&argv[2])->relay);
+  if (SWFDEC_AS_VALUE_IS_OBJECT (argv[2])) {
+    set = (SwfdecAsFunction *) (SWFDEC_AS_VALUE_GET_OBJECT (argv[2])->relay);
     if (!SWFDEC_IS_AS_FUNCTION (set))
       return;
-  } else if (SWFDEC_AS_VALUE_IS_NULL (*&argv[2])) {
+  } else if (SWFDEC_AS_VALUE_IS_NULL (argv[2])) {
     set = NULL;
   } else {
     return;
@@ -1684,7 +1684,7 @@ swfdec_as_object_construct (SwfdecAsContext *cx, SwfdecAsObject *object,
     guint argc, SwfdecAsValue *argv, SwfdecAsValue *ret)
 {
   if (argc > 0) {
-    if (SWFDEC_AS_VALUE_IS_MOVIE (*&argv[0])) {
+    if (SWFDEC_AS_VALUE_IS_MOVIE (argv[0])) {
       *ret = argv[0];
       return;
     } else {
diff --git a/swfdec/swfdec_as_relay.c b/swfdec/swfdec_as_relay.c
index 8a96573..4c0d238 100644
--- a/swfdec/swfdec_as_relay.c
+++ b/swfdec/swfdec_as_relay.c
@@ -107,9 +107,9 @@ swfdec_as_relay_call (SwfdecAsRelay *relay, const char *name, guint argc,
   if (return_value)
     SWFDEC_AS_VALUE_SET_UNDEFINED (return_value);
   swfdec_as_object_get_variable (relay->relay, name, &tmp);
-  if (!SWFDEC_AS_VALUE_IS_OBJECT (*&tmp))
+  if (!SWFDEC_AS_VALUE_IS_OBJECT (tmp))
     return FALSE;
-  fun = (SwfdecAsFunction *) (SWFDEC_AS_VALUE_GET_OBJECT (*&tmp)->relay);
+  fun = (SwfdecAsFunction *) (SWFDEC_AS_VALUE_GET_OBJECT (tmp)->relay);
   if (!SWFDEC_IS_AS_FUNCTION (fun))
     return FALSE;
   swfdec_as_function_call (fun, relay->relay, argc, argv, return_value ? return_value : &tmp);
diff --git a/swfdec/swfdec_as_script_function.c b/swfdec/swfdec_as_script_function.c
index 49811c0..c6ef1fe 100644
--- a/swfdec/swfdec_as_script_function.c
+++ b/swfdec/swfdec_as_script_function.c
@@ -64,7 +64,7 @@ swfdec_as_script_function_call (SwfdecAsFunction *function, SwfdecAsObject *this
     frame.original_target = script->target;
   }
   /* second check especially for super object */
-  if (thisp != NULL && SWFDEC_AS_VALUE_IS_UNDEFINED (*&frame.thisp)) {
+  if (thisp != NULL && SWFDEC_AS_VALUE_IS_UNDEFINED (frame.thisp)) {
     swfdec_as_frame_set_this (&frame, swfdec_as_object_resolve (thisp));
   }
   frame.argc = n_args;
diff --git a/swfdec/swfdec_as_string.c b/swfdec/swfdec_as_string.c
index 3edea28..928b2f3 100644
--- a/swfdec/swfdec_as_string.c
+++ b/swfdec/swfdec_as_string.c
@@ -342,7 +342,7 @@ swfdec_as_string_split_5 (SwfdecAsContext *cx, SwfdecAsObject *object,
   arr = swfdec_as_array_new (cx);
   SWFDEC_AS_VALUE_SET_OBJECT (ret, arr);
   /* hi, i'm the special case */
-  if (argc < 1 || SWFDEC_AS_VALUE_IS_UNDEFINED (*&argv[0])) {
+  if (argc < 1 || SWFDEC_AS_VALUE_IS_UNDEFINED (argv[0])) {
     delim = SWFDEC_AS_STR_COMMA;
   } else {
     delim = swfdec_as_value_to_string (cx, argv[0]);
@@ -352,7 +352,7 @@ swfdec_as_string_split_5 (SwfdecAsContext *cx, SwfdecAsObject *object,
     swfdec_as_array_push (arr, &val);
     return;
   }
-  if (argc > 1 && !SWFDEC_AS_VALUE_IS_UNDEFINED (*&argv[1])) {
+  if (argc > 1 && !SWFDEC_AS_VALUE_IS_UNDEFINED (argv[1])) {
     swfdec_as_value_to_string (cx, argv[0]);
     count = swfdec_as_value_to_integer (cx, &argv[1]);
   } else {
@@ -394,7 +394,7 @@ swfdec_as_string_split_6 (SwfdecAsContext *cx, SwfdecAsObject *object,
   arr = swfdec_as_array_new (cx);
   SWFDEC_AS_VALUE_SET_OBJECT (ret, arr);
   /* hi, i'm the special case */
-  if (argc < 1 || SWFDEC_AS_VALUE_IS_UNDEFINED (*&argv[0])) {
+  if (argc < 1 || SWFDEC_AS_VALUE_IS_UNDEFINED (argv[0])) {
     SWFDEC_AS_VALUE_SET_STRING (&val, str);
     swfdec_as_array_push (arr, &val);
     return;
@@ -407,7 +407,7 @@ swfdec_as_string_split_6 (SwfdecAsContext *cx, SwfdecAsObject *object,
     }
     return;
   }
-  if (argc > 1 && !SWFDEC_AS_VALUE_IS_UNDEFINED (*&argv[1]))
+  if (argc > 1 && !SWFDEC_AS_VALUE_IS_UNDEFINED (argv[1]))
     count = swfdec_as_value_to_integer (cx, &argv[1]);
   else
     count = G_MAXINT;
@@ -520,7 +520,7 @@ swfdec_as_string_substr (SwfdecAsContext *cx, SwfdecAsObject *object,
 
   len = g_utf8_strlen (string, -1);
   
-  if (argc > 1 && !SWFDEC_AS_VALUE_IS_UNDEFINED (*&argv[1])) {
+  if (argc > 1 && !SWFDEC_AS_VALUE_IS_UNDEFINED (argv[1])) {
     to = swfdec_as_value_to_integer (cx, &argv[1]);
     /* FIXME: wtf? */
     if (to < 0) {
@@ -554,7 +554,7 @@ swfdec_as_string_substring (SwfdecAsContext *cx, SwfdecAsObject *object,
   SWFDEC_AS_STRING_CHECK (&string, "i", &from);
 
   len = g_utf8_strlen (string, -1);
-  if (argc > 1 && !SWFDEC_AS_VALUE_IS_UNDEFINED (*&argv[1])) {
+  if (argc > 1 && !SWFDEC_AS_VALUE_IS_UNDEFINED (argv[1])) {
     to = swfdec_as_value_to_integer (cx, &argv[1]);
   } else {
     to = len;
diff --git a/swfdec/swfdec_as_super.c b/swfdec/swfdec_as_super.c
index f7472a9..a012b79 100644
--- a/swfdec/swfdec_as_super.c
+++ b/swfdec/swfdec_as_super.c
@@ -49,8 +49,8 @@ swfdec_as_super_call (SwfdecAsFunction *function, SwfdecAsObject *thisp,
   }
 
   swfdec_as_object_get_variable (super->object, SWFDEC_AS_STR___constructor__, &val);
-  if (!SWFDEC_AS_VALUE_IS_OBJECT (*&val) ||
-      !SWFDEC_IS_AS_FUNCTION (fun = (SwfdecAsFunction *) (SWFDEC_AS_VALUE_GET_OBJECT (*&val)->relay)))
+  if (!SWFDEC_AS_VALUE_IS_OBJECT (val) ||
+      !SWFDEC_IS_AS_FUNCTION (fun = (SwfdecAsFunction *) (SWFDEC_AS_VALUE_GET_OBJECT (val)->relay)))
     return;
 
   if (construct) {
diff --git a/swfdec/swfdec_as_types.c b/swfdec/swfdec_as_types.c
index edb4178..44b8172 100644
--- a/swfdec/swfdec_as_types.c
+++ b/swfdec/swfdec_as_types.c
@@ -388,28 +388,28 @@ swfdec_as_value_to_string (SwfdecAsContext *context, SwfdecAsValue value)
 
   switch (SWFDEC_AS_VALUE_GET_TYPE (value)) {
     case SWFDEC_AS_TYPE_STRING:
-      return SWFDEC_AS_VALUE_GET_STRING (*&value);
+      return SWFDEC_AS_VALUE_GET_STRING (value);
     case SWFDEC_AS_TYPE_UNDEFINED:
       if (context->version > 6)
 	return SWFDEC_AS_STR_undefined;
       else
 	return SWFDEC_AS_STR_EMPTY;
     case SWFDEC_AS_TYPE_BOOLEAN:
-      return SWFDEC_AS_VALUE_GET_BOOLEAN (*&value) ? SWFDEC_AS_STR_true : SWFDEC_AS_STR_false;
+      return SWFDEC_AS_VALUE_GET_BOOLEAN (value) ? SWFDEC_AS_STR_true : SWFDEC_AS_STR_false;
     case SWFDEC_AS_TYPE_NULL:
       return SWFDEC_AS_STR_null;
     case SWFDEC_AS_TYPE_NUMBER:
-      return swfdec_as_double_to_string (context, SWFDEC_AS_VALUE_GET_NUMBER (*&value));
+      return swfdec_as_double_to_string (context, SWFDEC_AS_VALUE_GET_NUMBER (value));
     case SWFDEC_AS_TYPE_OBJECT:
       {
-	SwfdecAsObject *object = SWFDEC_AS_VALUE_GET_OBJECT (*&value);
+	SwfdecAsObject *object = SWFDEC_AS_VALUE_GET_OBJECT (value);
 	if (SWFDEC_IS_AS_STRING (object->relay)) {
 	  return SWFDEC_AS_STRING (object->relay)->string;
 	} else {
 	  SwfdecAsValue ret;
 	  swfdec_as_object_call (object, SWFDEC_AS_STR_toString, 0, NULL, &ret);
-	  if (SWFDEC_AS_VALUE_IS_STRING (*&ret))
-	    return SWFDEC_AS_VALUE_GET_STRING (*&ret);
+	  if (SWFDEC_AS_VALUE_IS_STRING (ret))
+	    return SWFDEC_AS_VALUE_GET_STRING (ret);
 	  else if (SWFDEC_IS_AS_SUPER (object->relay))
 	    return SWFDEC_AS_STR__type_Object_;
 	  else if (SWFDEC_IS_AS_FUNCTION (object->relay))
@@ -420,7 +420,7 @@ swfdec_as_value_to_string (SwfdecAsContext *context, SwfdecAsValue value)
       }
     case SWFDEC_AS_TYPE_MOVIE:
       {
-	SwfdecMovie *movie = SWFDEC_AS_VALUE_GET_MOVIE (*&value);
+	SwfdecMovie *movie = SWFDEC_AS_VALUE_GET_MOVIE (value);
 	char *str;
 
 	if (movie == NULL)
@@ -462,9 +462,9 @@ swfdec_as_value_to_number (SwfdecAsContext *context, const SwfdecAsValue *value)
     case SWFDEC_AS_TYPE_NULL:
       return (context->version >= 7) ? NAN : 0.0;
     case SWFDEC_AS_TYPE_BOOLEAN:
-      return SWFDEC_AS_VALUE_GET_BOOLEAN (*&tmp) ? 1 : 0;
+      return SWFDEC_AS_VALUE_GET_BOOLEAN (tmp) ? 1 : 0;
     case SWFDEC_AS_TYPE_NUMBER:
-      return SWFDEC_AS_VALUE_GET_NUMBER (*&tmp);
+      return SWFDEC_AS_VALUE_GET_NUMBER (tmp);
     case SWFDEC_AS_TYPE_STRING:
       {
 	const char *s;
@@ -472,7 +472,7 @@ swfdec_as_value_to_number (SwfdecAsContext *context, const SwfdecAsValue *value)
 	double d;
 	
 	// FIXME: We should most likely copy Tamarin's code here (MathUtils.cpp)
-	s = SWFDEC_AS_VALUE_GET_STRING (*&tmp);
+	s = SWFDEC_AS_VALUE_GET_STRING (tmp);
 	if (s == SWFDEC_AS_STR_EMPTY)
 	  return (context->version >= 5) ? NAN : 0.0;
 	if (context->version > 5 && s[0] == '0' &&
@@ -589,12 +589,12 @@ swfdec_as_value_to_object (SwfdecAsContext *context, const SwfdecAsValue *value)
   }
 
   swfdec_as_object_get_variable (context->global, s, &val);
-  if (!SWFDEC_AS_VALUE_IS_OBJECT (*&val) ||
-      !SWFDEC_IS_AS_FUNCTION (fun = (SwfdecAsFunction *) (SWFDEC_AS_VALUE_GET_OBJECT (*&val)->relay)))
+  if (!SWFDEC_AS_VALUE_IS_OBJECT (val) ||
+      !SWFDEC_IS_AS_FUNCTION (fun = (SwfdecAsFunction *) (SWFDEC_AS_VALUE_GET_OBJECT (val)->relay)))
     return NULL;
   swfdec_as_object_create (fun, 1, value, &val);
-  if (SWFDEC_AS_VALUE_IS_OBJECT (*&val)) {
-    return SWFDEC_AS_VALUE_GET_OBJECT (*&val);
+  if (SWFDEC_AS_VALUE_IS_OBJECT (val)) {
+    return SWFDEC_AS_VALUE_GET_OBJECT (val);
   } else {
     SWFDEC_ERROR ("did not construct an object");
     return NULL;
diff --git a/swfdec/swfdec_asbroadcaster.c b/swfdec/swfdec_asbroadcaster.c
index 4de8a42..f287cbd 100644
--- a/swfdec/swfdec_asbroadcaster.c
+++ b/swfdec/swfdec_asbroadcaster.c
@@ -51,10 +51,10 @@ broadcastMessage (SwfdecAsContext *cx, SwfdecAsObject *object,
   argc--;
 
   swfdec_as_object_get_variable (object, SWFDEC_AS_STR__listeners, &val);
-  if (!SWFDEC_AS_VALUE_IS_COMPOSITE (*&val))
+  if (!SWFDEC_AS_VALUE_IS_COMPOSITE (val))
     return;
 
-  listeners = SWFDEC_AS_VALUE_GET_COMPOSITE (*&val);
+  listeners = SWFDEC_AS_VALUE_GET_COMPOSITE (val);
   swfdec_as_object_get_variable (listeners, SWFDEC_AS_STR_length, &val);
   length = swfdec_as_value_to_integer (cx, &val);
 
diff --git a/swfdec/swfdec_color_as.c b/swfdec/swfdec_color_as.c
index 65a5ae4..ce8bb30 100644
--- a/swfdec/swfdec_color_as.c
+++ b/swfdec/swfdec_color_as.c
@@ -40,10 +40,10 @@ swfdec_movie_color_get_movie (SwfdecAsObject *object)
     return NULL;
 
   swfdec_as_object_get_variable (object, SWFDEC_AS_STR_target, &val);
-  if (!SWFDEC_AS_VALUE_IS_MOVIE (*&val))
+  if (!SWFDEC_AS_VALUE_IS_MOVIE (val))
     return NULL;
 
-  return SWFDEC_AS_VALUE_GET_MOVIE (*&val);
+  return SWFDEC_AS_VALUE_GET_MOVIE (val);
 }
 
 SWFDEC_AS_NATIVE (700, 2, swfdec_movie_color_getRGB)
@@ -159,9 +159,9 @@ swfdec_movie_color_setTransform (SwfdecAsContext *cx, SwfdecAsObject *obj,
   if (movie == NULL)
     return;
 
-  if (!SWFDEC_AS_VALUE_IS_COMPOSITE (*&argv[0]))
+  if (!SWFDEC_AS_VALUE_IS_COMPOSITE (argv[0]))
     return;
-  parse = SWFDEC_AS_VALUE_GET_COMPOSITE (*&argv[0]);
+  parse = SWFDEC_AS_VALUE_GET_COMPOSITE (argv[0]);
   if (parse == NULL)
     return;
   parse_property (parse, SWFDEC_AS_STR_ra, &movie->color_transform.ra, TRUE);
diff --git a/swfdec/swfdec_file_reference.c b/swfdec/swfdec_file_reference.c
index 3708c59..79b3993 100644
--- a/swfdec/swfdec_file_reference.c
+++ b/swfdec/swfdec_file_reference.c
@@ -113,8 +113,8 @@ swfdec_file_reference_construct (SwfdecAsContext *cx, SwfdecAsObject *object,
 
   SWFDEC_STUB ("FileReference");
 
-  if (argc > 0 && SWFDEC_AS_VALUE_IS_COMPOSITE (*&argv[0])) {
-    target = SWFDEC_AS_VALUE_GET_COMPOSITE (*&argv[0]);
+  if (argc > 0 && SWFDEC_AS_VALUE_IS_COMPOSITE (argv[0])) {
+    target = SWFDEC_AS_VALUE_GET_COMPOSITE (argv[0]);
   } else {
     target = object;
   }
diff --git a/swfdec/swfdec_interval.c b/swfdec/swfdec_interval.c
index 38bea49..233f7f0 100644
--- a/swfdec/swfdec_interval.c
+++ b/swfdec/swfdec_interval.c
@@ -115,7 +115,7 @@ swfdec_interval_trigger (SwfdecTimeout *timeout)
   } else {
     /* we check that the relay's type is correct upon adding the interval */
     swfdec_as_function_call (SWFDEC_AS_FUNCTION (
-	  SWFDEC_AS_VALUE_GET_OBJECT (*&interval->args[0])->relay),
+	  SWFDEC_AS_VALUE_GET_OBJECT (interval->args[0])->relay),
 	NULL, interval->n_args, &interval->args[1], &ret);
   }
   swfdec_sandbox_unuse (interval->sandbox);
diff --git a/swfdec/swfdec_load_object_as.c b/swfdec/swfdec_load_object_as.c
index 12fd632..a3f8099 100644
--- a/swfdec/swfdec_load_object_as.c
+++ b/swfdec/swfdec_load_object_as.c
@@ -140,11 +140,11 @@ swfdec_load_object_as_get_headers (SwfdecAsObject *object, guint *header_count,
   if (!swfdec_as_object_get_variable (object, SWFDEC_AS_STR__customHeaders,
 	&val))
     goto end;
-  if (!SWFDEC_AS_VALUE_IS_COMPOSITE (*&val)) {
+  if (!SWFDEC_AS_VALUE_IS_COMPOSITE (val)) {
     SWFDEC_WARNING ("_customHeaders is not an object");
     goto end;
   }
-  list = SWFDEC_AS_VALUE_GET_COMPOSITE (*&val);
+  list = SWFDEC_AS_VALUE_GET_COMPOSITE (val);
 
   swfdec_as_object_get_variable (list, SWFDEC_AS_STR_length, &val);
   length = swfdec_as_value_to_integer (cx, &val);
diff --git a/swfdec/swfdec_movie.c b/swfdec/swfdec_movie.c
index 4f4bb00..fc7ab75 100644
--- a/swfdec/swfdec_movie.c
+++ b/swfdec/swfdec_movie.c
@@ -1312,7 +1312,7 @@ swfdec_movie_constructor (GType type, guint n_construct_properties,
     movie->as_value = swfdec_as_movie_value_new (movie, name);
 
   /* make the resource ours if it doesn't belong to anyone yet */
-  if (SWFDEC_AS_VALUE_IS_UNDEFINED (*&movie->resource->movie)) {
+  if (SWFDEC_AS_VALUE_IS_UNDEFINED (movie->resource->movie)) {
     g_assert (SWFDEC_IS_SPRITE_MOVIE (movie));
     SWFDEC_AS_VALUE_SET_MOVIE (&movie->resource->movie, movie);
   }
@@ -1670,7 +1670,7 @@ swfdec_movie_get_own_resource (SwfdecMovie *movie)
   if (!SWFDEC_IS_SPRITE_MOVIE (movie))
     return NULL;
 
-  if (SWFDEC_AS_VALUE_GET_MOVIE (*&movie->resource->movie) != movie)
+  if (SWFDEC_AS_VALUE_GET_MOVIE (movie->resource->movie) != movie)
     return NULL;
 
   return movie->resource;
diff --git a/swfdec/swfdec_movie_as_drawing.c b/swfdec/swfdec_movie_as_drawing.c
index 390fea2..ef041a7 100644
--- a/swfdec/swfdec_movie_as_drawing.c
+++ b/swfdec/swfdec_movie_as_drawing.c
@@ -88,7 +88,7 @@ swfdec_sprite_movie_beginFill (SwfdecAsContext *cx, SwfdecAsObject *object,
   SWFDEC_AS_CHECK (SWFDEC_TYPE_MOVIE, &movie, "|ii", &color, &alpha);
   movie->draw_fill = NULL;
   
-  if (argc == 0 || SWFDEC_AS_VALUE_IS_UNDEFINED (*&argv[0])) {
+  if (argc == 0 || SWFDEC_AS_VALUE_IS_UNDEFINED (argv[0])) {
     color = 0;
   } else {
     color = color & 0xFFFFFF;
@@ -219,20 +219,20 @@ swfdec_sprite_movie_beginGradientFill (SwfdecAsContext *cx, SwfdecAsObject *obje
     if (check > i) {
       const char *name = swfdec_as_integer_to_string (cx, i);
       if (swfdec_as_object_get_variable (colors, name, &v)
-	  && SWFDEC_AS_VALUE_IS_NUMBER (*&v))
+	  && SWFDEC_AS_VALUE_IS_NUMBER (v))
 	c = swfdec_as_value_to_integer (cx, &v);
       else
 	c = 0;
       if (!swfdec_as_object_get_variable (alphas, name, &v)) {
 	a = c;
-      } else if (!SWFDEC_AS_VALUE_IS_NUMBER (*&v)) {
+      } else if (!SWFDEC_AS_VALUE_IS_NUMBER (v)) {
 	a = 0;
       } else {
 	a = swfdec_as_value_to_integer (cx, &v);
       }
       if (!swfdec_as_object_get_variable (ratios, name, &v))
 	r = CLAMP (a, 0, 255);
-      else if (!SWFDEC_AS_VALUE_IS_NUMBER (*&v))
+      else if (!SWFDEC_AS_VALUE_IS_NUMBER (v))
 	r = 0;
       else
 	r = swfdec_as_value_to_integer (cx, &v);
@@ -360,7 +360,7 @@ swfdec_sprite_movie_lineStyle (SwfdecAsContext *cx, SwfdecAsObject *object,
   SWFDEC_AS_CHECK (SWFDEC_TYPE_MOVIE, &movie, "i|ii", &width, &color, &alpha);
 
   movie->draw_line = NULL;
-  if (SWFDEC_AS_VALUE_IS_UNDEFINED (*&argv[0]))
+  if (SWFDEC_AS_VALUE_IS_UNDEFINED (argv[0]))
     return;
   if (argc > 3) {
     SWFDEC_FIXME ("implement Flash 8 arguments to lineStyle");
diff --git a/swfdec/swfdec_net_connection.c b/swfdec/swfdec_net_connection.c
index f44f9b6..25da84b 100644
--- a/swfdec/swfdec_net_connection.c
+++ b/swfdec/swfdec_net_connection.c
@@ -106,9 +106,9 @@ swfdec_net_connection_do_connect (SwfdecAsContext *cx, SwfdecAsObject *object,
 
   SWFDEC_AS_CHECK (SWFDEC_TYPE_NET_CONNECTION, &conn, "v", &val);
 
-  if (SWFDEC_AS_VALUE_IS_STRING (*&val)) {
-    url = SWFDEC_AS_VALUE_GET_STRING (*&val);
-  } else if (SWFDEC_AS_VALUE_IS_NULL (*&val)) {
+  if (SWFDEC_AS_VALUE_IS_STRING (val)) {
+    url = SWFDEC_AS_VALUE_GET_STRING (val);
+  } else if (SWFDEC_AS_VALUE_IS_NULL (val)) {
     url = NULL;
   } else {
     SWFDEC_FIXME ("untested argument to NetConnection.connect: type %u",
diff --git a/swfdec/swfdec_net_stream.c b/swfdec/swfdec_net_stream.c
index 2cc2e73..4a6f6c3 100644
--- a/swfdec/swfdec_net_stream.c
+++ b/swfdec/swfdec_net_stream.c
@@ -66,8 +66,8 @@ swfdec_net_stream_onstatus (SwfdecNetStream *stream, const char *code, const cha
 
       swfdec_as_object_get_variable (cx->global,
           SWFDEC_AS_STR_System, &system);
-      if (SWFDEC_AS_VALUE_IS_COMPOSITE (*&system) &&
-	  (object = SWFDEC_AS_VALUE_GET_COMPOSITE (*&system)) != NULL) {
+      if (SWFDEC_AS_VALUE_IS_COMPOSITE (system) &&
+	  (object = SWFDEC_AS_VALUE_GET_COMPOSITE (system)) != NULL) {
         swfdec_as_object_call (object, SWFDEC_AS_STR_onStatus, 1, &val, NULL);
       }
     }
@@ -279,7 +279,7 @@ swfdec_net_stream_video_goto (SwfdecNetStream *stream, guint timestamp)
 	SWFDEC_ERROR ("could not parse data tag");
       } else {
 	swfdec_as_relay_call (SWFDEC_AS_RELAY (stream), 
-	    SWFDEC_AS_VALUE_GET_STRING (*&name), 1, &value, NULL);
+	    SWFDEC_AS_VALUE_GET_STRING (name), 1, &value, NULL);
       }
       swfdec_sandbox_unuse (stream->sandbox);
     }
diff --git a/swfdec/swfdec_net_stream_as.c b/swfdec/swfdec_net_stream_as.c
index a4dec3a..f69369c 100644
--- a/swfdec/swfdec_net_stream_as.c
+++ b/swfdec/swfdec_net_stream_as.c
@@ -295,8 +295,8 @@ swfdec_net_stream_construct (SwfdecAsContext *cx, SwfdecAsObject *obj, guint arg
 
   swfdec_net_stream_setup (cx, obj, 0, NULL, rval);
   if (argc == 0 ||
-      !SWFDEC_AS_VALUE_IS_OBJECT (*&argv[0]) || 
-      !SWFDEC_IS_NET_CONNECTION ((conn = (SwfdecNetConnection *) SWFDEC_AS_VALUE_GET_OBJECT (*&argv[0])))) {
+      !SWFDEC_AS_VALUE_IS_OBJECT (argv[0]) || 
+      !SWFDEC_IS_NET_CONNECTION ((conn = (SwfdecNetConnection *) SWFDEC_AS_VALUE_GET_OBJECT (argv[0])))) {
     SWFDEC_WARNING ("no connection passed to NetStream ()");
     return;
   }
@@ -326,8 +326,8 @@ swfdec_net_stream_init_context (SwfdecPlayer *player)
   swfdec_as_object_set_variable_and_flags (proto, SWFDEC_AS_STR_constructor,
       &val, SWFDEC_AS_VARIABLE_HIDDEN | SWFDEC_AS_VARIABLE_PERMANENT);
   swfdec_as_object_get_variable (context->global, SWFDEC_AS_STR_Object, &val);
-  if (SWFDEC_AS_VALUE_IS_OBJECT (*&val)) {
-    swfdec_as_object_get_variable (SWFDEC_AS_VALUE_GET_OBJECT (*&val),
+  if (SWFDEC_AS_VALUE_IS_OBJECT (val)) {
+    swfdec_as_object_get_variable (SWFDEC_AS_VALUE_GET_OBJECT (val),
 	SWFDEC_AS_STR_prototype, &val);
     swfdec_as_object_set_variable_and_flags (proto, SWFDEC_AS_STR___proto__, &val,
 	SWFDEC_AS_VARIABLE_HIDDEN | SWFDEC_AS_VARIABLE_PERMANENT);
diff --git a/swfdec/swfdec_player.c b/swfdec/swfdec_player.c
index 915acf9..35e2d0f 100644
--- a/swfdec/swfdec_player.c
+++ b/swfdec/swfdec_player.c
@@ -1139,9 +1139,9 @@ swfdec_player_broadcast (SwfdecPlayer *player, const char *object_name,
     SwfdecSandbox *sandbox = walk->data;
     swfdec_sandbox_use (sandbox);
     swfdec_as_object_get_variable (SWFDEC_AS_CONTEXT (player)->global, object_name, &vals[0]);
-    if (!SWFDEC_AS_VALUE_IS_COMPOSITE (*&vals[0]))
+    if (!SWFDEC_AS_VALUE_IS_COMPOSITE (vals[0]))
       return;
-    obj = SWFDEC_AS_VALUE_GET_COMPOSITE (*&vals[0]);
+    obj = SWFDEC_AS_VALUE_GET_COMPOSITE (vals[0]);
     if (obj == NULL)
       return;
     SWFDEC_AS_VALUE_SET_STRING (&vals[0], signal_name);
@@ -1514,7 +1514,7 @@ swfdec_player_get_tab_movies (SwfdecPlayer *player, const GList *current)
 	/* Flash queries again - why not? :/ */
 	swfdec_as_object_get_variable (object, SWFDEC_AS_STR_tabEnabled, &val);
 	ret = g_list_prepend (ret, actor);
-      } else if (SWFDEC_AS_VALUE_IS_UNDEFINED (*&val) && 
+      } else if (SWFDEC_AS_VALUE_IS_UNDEFINED (val) && 
 	  swfdec_actor_get_mouse_events (actor)) {
 	ret = g_list_prepend (ret, actor);
       }
@@ -1525,7 +1525,7 @@ swfdec_player_get_tab_movies (SwfdecPlayer *player, const GList *current)
     else
       swfdec_as_object_get_variable (object, SWFDEC_AS_STR_tabChildren, &val);
 
-    if (SWFDEC_AS_VALUE_IS_UNDEFINED (*&val) ||
+    if (SWFDEC_AS_VALUE_IS_UNDEFINED (val) ||
 	swfdec_as_value_to_boolean (SWFDEC_AS_CONTEXT (player), &val)) {
       GList *list;
       swfdec_sandbox_unuse (SWFDEC_MOVIE (actor)->resource->sandbox);
diff --git a/swfdec/swfdec_player_as.c b/swfdec/swfdec_player_as.c
index 24bf233..f4f4c26 100644
--- a/swfdec/swfdec_player_as.c
+++ b/swfdec/swfdec_player_as.c
@@ -51,8 +51,8 @@ swfdec_player_do_set_interval (gboolean repeat, SwfdecAsContext *cx, guint argc,
     return;
   }
 
-  if (!SWFDEC_AS_VALUE_IS_COMPOSITE (*&argv[0]) ||
-      (object = SWFDEC_AS_VALUE_GET_COMPOSITE (*&argv[0])) == NULL) {
+  if (!SWFDEC_AS_VALUE_IS_COMPOSITE (argv[0]) ||
+      (object = SWFDEC_AS_VALUE_GET_COMPOSITE (argv[0])) == NULL) {
     SWFDEC_WARNING ("first argument to setInterval is not an object");
     return;
   }
@@ -331,13 +331,13 @@ swfdec_player_object_registerClass (SwfdecAsContext *cx, SwfdecAsObject *object,
 
   SWFDEC_AS_CHECK (0, NULL, "s", &name);
 
-  if (argc < 2 || !SWFDEC_AS_VALUE_IS_OBJECT (*&argv[1])) {
+  if (argc < 2 || !SWFDEC_AS_VALUE_IS_OBJECT (argv[1])) {
     SWFDEC_AS_VALUE_SET_BOOLEAN (rval, FALSE);
     return;
   }
   
   swfdec_player_set_export_class (SWFDEC_PLAYER (cx), name, 
-      SWFDEC_AS_VALUE_GET_OBJECT (*&argv[1]));
+      SWFDEC_AS_VALUE_GET_OBJECT (argv[1]));
   SWFDEC_AS_VALUE_SET_BOOLEAN (rval, TRUE);
 }
 
diff --git a/swfdec/swfdec_print_job.c b/swfdec/swfdec_print_job.c
index 58de384..5bf334b 100644
--- a/swfdec/swfdec_print_job.c
+++ b/swfdec/swfdec_print_job.c
@@ -98,14 +98,14 @@ swfdec_print_job_init_properties (SwfdecAsContext *cx)
   g_return_if_fail (SWFDEC_IS_AS_CONTEXT (cx));
 
   swfdec_as_object_get_variable (cx->global, SWFDEC_AS_STR_PrintJob, &val);
-  if (!SWFDEC_AS_VALUE_IS_OBJECT (*&val))
+  if (!SWFDEC_AS_VALUE_IS_OBJECT (val))
     return;
-  xml = SWFDEC_AS_VALUE_GET_OBJECT (*&val);
+  xml = SWFDEC_AS_VALUE_GET_OBJECT (val);
 
   swfdec_as_object_get_variable (xml, SWFDEC_AS_STR_prototype, &val);
-  if (!SWFDEC_AS_VALUE_IS_OBJECT (*&val))
+  if (!SWFDEC_AS_VALUE_IS_OBJECT (val))
     return;
-  proto = SWFDEC_AS_VALUE_GET_OBJECT (*&val);
+  proto = SWFDEC_AS_VALUE_GET_OBJECT (val);
 
   swfdec_as_object_add_native_variable (proto, SWFDEC_AS_STR_orientation,
       swfdec_print_job_get_orientation, NULL);
diff --git a/swfdec/swfdec_resource.c b/swfdec/swfdec_resource.c
index 387cfab..ce59da2 100644
--- a/swfdec/swfdec_resource.c
+++ b/swfdec/swfdec_resource.c
@@ -70,7 +70,7 @@ static void
 swfdec_resource_stream_target_image (SwfdecResource *instance)
 {
   SwfdecPlayer *player = SWFDEC_PLAYER (swfdec_gc_object_get_context (instance));
-  SwfdecSpriteMovie *movie = (SwfdecSpriteMovie *) SWFDEC_AS_VALUE_GET_MOVIE (*&instance->movie);
+  SwfdecSpriteMovie *movie = (SwfdecSpriteMovie *) SWFDEC_AS_VALUE_GET_MOVIE (instance->movie);
 
   if (!SWFDEC_IS_SPRITE_MOVIE (movie) || movie->sprite != NULL)
     return;
@@ -124,8 +124,8 @@ swfdec_resource_emit_signal (SwfdecResource *resource, const char *name, gboolea
   cx = swfdec_gc_object_get_context (resource->clip_loader);
 
   SWFDEC_AS_VALUE_SET_STRING (&vals[0], name);
-  if (SWFDEC_AS_VALUE_IS_MOVIE (*&resource->movie)) {
-    movie = SWFDEC_AS_VALUE_GET_MOVIE (*&resource->movie);
+  if (SWFDEC_AS_VALUE_IS_MOVIE (resource->movie)) {
+    movie = SWFDEC_AS_VALUE_GET_MOVIE (resource->movie);
     if (movie == NULL) {
       SWFDEC_DEBUG ("no movie, not emitting signal");
       return;
@@ -212,8 +212,8 @@ swfdec_resource_stream_target_open (SwfdecStreamTarget *target, SwfdecStream *st
   SwfdecMovie *movie;
   const char *query;
 
-  g_assert (SWFDEC_AS_VALUE_IS_MOVIE (*&instance->movie));
-  movie = SWFDEC_AS_VALUE_GET_MOVIE (*&instance->movie);
+  g_assert (SWFDEC_AS_VALUE_IS_MOVIE (instance->movie));
+  movie = SWFDEC_AS_VALUE_GET_MOVIE (instance->movie);
   g_assert (movie);
   object = swfdec_as_relay_get_as_object (SWFDEC_AS_RELAY (movie));
   query = swfdec_url_get_query (swfdec_loader_get_url (loader));
@@ -333,8 +333,8 @@ swfdec_resource_stream_target_close (SwfdecStreamTarget *target, SwfdecStream *s
   if (swfdec_resource_abort_if_not_initialized (resource))
     return;
 
-  if (SWFDEC_AS_VALUE_IS_MOVIE (*&resource->movie)) {
-    SwfdecMovie *movie = SWFDEC_AS_VALUE_GET_MOVIE (*&resource->movie);
+  if (SWFDEC_AS_VALUE_IS_MOVIE (resource->movie)) {
+    SwfdecMovie *movie = SWFDEC_AS_VALUE_GET_MOVIE (resource->movie);
     if (movie)
       swfdec_actor_queue_script (SWFDEC_ACTOR (movie), SWFDEC_EVENT_LOAD);
   }
@@ -532,17 +532,17 @@ swfdec_resource_create_movie (SwfdecResource *resource, SwfdecResourceLoad *load
   SwfdecPlayer *player;
   SwfdecSpriteMovie *movie;
 
-  if (SWFDEC_AS_VALUE_IS_MOVIE (*&resource->movie))
+  if (SWFDEC_AS_VALUE_IS_MOVIE (resource->movie))
     return TRUE;
   player = SWFDEC_PLAYER (swfdec_gc_object_get_context (resource));
-  if (SWFDEC_AS_VALUE_IS_MOVIE (*&load->target)) {
-    movie = (SwfdecSpriteMovie *) SWFDEC_AS_VALUE_GET_MOVIE (*&load->target);
+  if (SWFDEC_AS_VALUE_IS_MOVIE (load->target)) {
+    movie = (SwfdecSpriteMovie *) SWFDEC_AS_VALUE_GET_MOVIE (load->target);
     if (SWFDEC_IS_SPRITE_MOVIE (movie))
       movie = swfdec_resource_replace_movie (movie, resource);
     else
       movie = NULL;
-  } else if (SWFDEC_AS_VALUE_IS_STRING (*&load->target)) {
-    int level = swfdec_player_get_level (player, SWFDEC_AS_VALUE_GET_STRING (*&load->target), 7);
+  } else if (SWFDEC_AS_VALUE_IS_STRING (load->target)) {
+    int level = swfdec_player_get_level (player, SWFDEC_AS_VALUE_GET_STRING (load->target), 7);
     if (level >= 0) {
       movie = swfdec_player_get_movie_at_level (player, level);
       if (movie)
@@ -582,9 +582,9 @@ swfdec_resource_do_load (SwfdecPlayer *player, gboolean allowed, gpointer loadp)
     SWFDEC_WARNING ("SECURITY: no access to %s from %s",
 	load->url, swfdec_url_get_url (load->sandbox->url));
     /* FIXME: is replacing correct? */
-    if (SWFDEC_AS_VALUE_IS_MOVIE (*&load->target)) {
-      if (SWFDEC_AS_VALUE_IS_MOVIE (*&load->target) &&
-	  SWFDEC_IS_SPRITE_MOVIE (SWFDEC_AS_VALUE_GET_MOVIE (*&load->target)))
+    if (SWFDEC_AS_VALUE_IS_MOVIE (load->target)) {
+      if (SWFDEC_AS_VALUE_IS_MOVIE (load->target) &&
+	  SWFDEC_IS_SPRITE_MOVIE (SWFDEC_AS_VALUE_GET_MOVIE (load->target)))
 	resource->movie = load->target;
       swfdec_resource_emit_error (resource, SWFDEC_AS_STR_IllegalRequest);
     }
@@ -619,8 +619,8 @@ swfdec_resource_load_request (gpointer loadp, gpointer playerp)
   if (load->url[0] == '\0') {
     SwfdecSpriteMovie *movie;
       
-    if (SWFDEC_AS_VALUE_IS_MOVIE (*&load->target)) {
-      movie = (SwfdecSpriteMovie *) SWFDEC_AS_VALUE_GET_MOVIE (*&load->target);
+    if (SWFDEC_AS_VALUE_IS_MOVIE (load->target)) {
+      movie = (SwfdecSpriteMovie *) SWFDEC_AS_VALUE_GET_MOVIE (load->target);
     } else {
       movie = NULL;
     }
@@ -637,7 +637,7 @@ swfdec_resource_load_request (gpointer loadp, gpointer playerp)
   if (g_ascii_strncasecmp (load->url, "FSCommand:", 10) == 0) {
     char *command = load->url + 10;
     const char *target = swfdec_as_value_to_string (SWFDEC_AS_CONTEXT (player), load->target);
-    if (SWFDEC_AS_VALUE_IS_MOVIE (*&load->target)) {
+    if (SWFDEC_AS_VALUE_IS_MOVIE (load->target)) {
       SWFDEC_FIXME ("Adobe 9.0.124.0 and later don't emit fscommands here. "
 	  "We just do for compatibility reasons with the testsuite.");
     }
@@ -647,9 +647,9 @@ swfdec_resource_load_request (gpointer loadp, gpointer playerp)
   }
 
   /* LAUNCH command (aka getURL) */
-  if (SWFDEC_AS_VALUE_IS_STRING (*&load->target) && swfdec_player_get_level (player, 
-	SWFDEC_AS_VALUE_GET_STRING (*&load->target), 7) < 0) {
-    swfdec_player_launch (player, load->url, SWFDEC_AS_VALUE_GET_STRING (*&load->target), load->buffer);
+  if (SWFDEC_AS_VALUE_IS_STRING (load->target) && swfdec_player_get_level (player, 
+	SWFDEC_AS_VALUE_GET_STRING (load->target), 7) < 0) {
+    swfdec_player_launch (player, load->url, SWFDEC_AS_VALUE_GET_STRING (load->target), load->buffer);
     swfdec_player_unroot (player, load);
     return;
   }
@@ -758,9 +758,9 @@ swfdec_resource_emit_on_load_init (SwfdecResource *resource)
   if (resource->state != SWFDEC_RESOURCE_COMPLETE)
     return FALSE;
 
-  if (SWFDEC_AS_VALUE_IS_MOVIE (*&resource->movie) && SWFDEC_IS_IMAGE_DECODER (resource->decoder)) {
+  if (SWFDEC_AS_VALUE_IS_MOVIE (resource->movie) && SWFDEC_IS_IMAGE_DECODER (resource->decoder)) {
     SwfdecImage *image = SWFDEC_IMAGE_DECODER (resource->decoder)->image;
-    SwfdecMovie *movie = SWFDEC_AS_VALUE_GET_MOVIE (*&resource->movie);
+    SwfdecMovie *movie = SWFDEC_AS_VALUE_GET_MOVIE (resource->movie);
     if (image && movie) {
       swfdec_movie_invalidate_next (movie);
       swfdec_movie_queue_update (movie, SWFDEC_MOVIE_INVALID_EXTENTS);
diff --git a/swfdec/swfdec_sound_object.c b/swfdec/swfdec_sound_object.c
index 8dce9f0..5a7d31b 100644
--- a/swfdec/swfdec_sound_object.c
+++ b/swfdec/swfdec_sound_object.c
@@ -451,7 +451,7 @@ swfdec_sound_object_construct (SwfdecAsContext *cx, SwfdecAsObject *object, guin
   sound = g_object_new (SWFDEC_TYPE_SOUND_OBJECT, "context", cx, NULL);
   swfdec_as_object_set_relay (object, SWFDEC_AS_RELAY (sound));
 
-  if (argc == 0 || SWFDEC_AS_VALUE_IS_UNDEFINED (*&argv[0])) {
+  if (argc == 0 || SWFDEC_AS_VALUE_IS_UNDEFINED (argv[0])) {
     sound->target = NULL;
   } else {
     sound->target = swfdec_as_value_to_string (cx, argv[0]);
diff --git a/swfdec/swfdec_sprite_movie_as.c b/swfdec/swfdec_sprite_movie_as.c
index e6d30a8..9f8c32f 100644
--- a/swfdec/swfdec_sprite_movie_as.c
+++ b/swfdec/swfdec_sprite_movie_as.c
@@ -163,10 +163,10 @@ swfdec_sprite_movie_set_filters (SwfdecAsContext *cx, SwfdecAsObject *object,
   for (i = 0; i < length; i++) {
     if (!swfdec_as_object_get_variable (array, 
 	  swfdec_as_integer_to_string (cx, i), &val) ||
-	!SWFDEC_AS_VALUE_IS_OBJECT (*&val) ||
-	!SWFDEC_IS_FILTER (SWFDEC_AS_VALUE_GET_OBJECT (*&val)->relay))
+	!SWFDEC_AS_VALUE_IS_OBJECT (val) ||
+	!SWFDEC_IS_FILTER (SWFDEC_AS_VALUE_GET_OBJECT (val)->relay))
       continue;
-    filter = SWFDEC_FILTER (SWFDEC_AS_VALUE_GET_OBJECT (*&val)->relay);
+    filter = SWFDEC_FILTER (SWFDEC_AS_VALUE_GET_OBJECT (val)->relay);
     filter = swfdec_filter_clone (filter);
     list = g_slist_prepend (list, filter);
   }
@@ -241,18 +241,18 @@ swfdec_sprite_movie_set_blendMode (SwfdecAsContext *cx, SwfdecAsObject *object,
 
   SWFDEC_AS_CHECK (SWFDEC_TYPE_MOVIE, &movie, "v", &val);
 
-  if (SWFDEC_AS_VALUE_IS_NUMBER (*&val)) {
-    blend_mode = SWFDEC_AS_VALUE_GET_NUMBER (*&val);
-  } else if (SWFDEC_AS_VALUE_IS_STRING (*&val)) {
+  if (SWFDEC_AS_VALUE_IS_NUMBER (val)) {
+    blend_mode = SWFDEC_AS_VALUE_GET_NUMBER (val);
+  } else if (SWFDEC_AS_VALUE_IS_STRING (val)) {
     blend_mode = 0;
-    str = SWFDEC_AS_VALUE_GET_STRING (*&val);
+    str = SWFDEC_AS_VALUE_GET_STRING (val);
     for (i = 0; i < num_blend_mode_names; i++) {
       if (str == blend_mode_names[i]) { // case-sensitive
 	blend_mode = i + 1;
 	break;
       }
     }
-  } else if (SWFDEC_AS_VALUE_IS_OBJECT (*&val)) {
+  } else if (SWFDEC_AS_VALUE_IS_OBJECT (val)) {
     blend_mode = 0;
   } else {
     blend_mode = 1;
@@ -348,7 +348,7 @@ swfdec_sprite_movie_getInstanceAtDepth (SwfdecAsContext *cx,
   SWFDEC_AS_CHECK (SWFDEC_TYPE_MOVIE, &movie, "i", &depth);
 
   // special case
-  if (SWFDEC_AS_VALUE_IS_UNDEFINED (*&argv[0]))
+  if (SWFDEC_AS_VALUE_IS_UNDEFINED (argv[0]))
     return;
 
   movie = swfdec_movie_find (movie, depth);
@@ -676,8 +676,8 @@ swfdec_sprite_movie_swapDepths (SwfdecAsContext *cx, SwfdecAsObject *object,
   if (movie->parent == NULL)
     SWFDEC_FIXME ("swapDepths on root movie, should do something weird");
 
-  if (SWFDEC_AS_VALUE_IS_MOVIE (*&value)) {
-    other = SWFDEC_AS_VALUE_GET_MOVIE (*&value);
+  if (SWFDEC_AS_VALUE_IS_MOVIE (value)) {
+    other = SWFDEC_AS_VALUE_GET_MOVIE (value);
     if (other == NULL || other->parent != movie->parent)
       return;
     depth = other->depth;
@@ -944,7 +944,7 @@ swfdec_sprite_movie_setMask (SwfdecAsContext *cx, SwfdecAsObject *object,
   /* yes, this works with regular movies */
   SWFDEC_AS_CHECK (SWFDEC_TYPE_MOVIE, &movie, "M", &mask);
 
-  if (argc > 0 && mask == NULL && !SWFDEC_AS_VALUE_IS_NULL (*&argv[0])) {
+  if (argc > 0 && mask == NULL && !SWFDEC_AS_VALUE_IS_NULL (argv[0])) {
     SWFDEC_FIXME ("mask is not a movie and not null, what now?");
     mask = NULL;
   }
diff --git a/swfdec/swfdec_style_sheet.c b/swfdec/swfdec_style_sheet.c
index 65e5531..d0d37ce 100644
--- a/swfdec/swfdec_style_sheet.c
+++ b/swfdec/swfdec_style_sheet.c
@@ -334,12 +334,12 @@ swfdec_style_sheet_get_format (SwfdecStyleSheet *style, const char *name)
   swfdec_as_object_get_variable (swfdec_as_relay_get_as_object (SWFDEC_AS_RELAY (style)),
       SWFDEC_AS_STR__styles, &val);
   swfdec_as_value_get_variable (swfdec_gc_object_get_context (style), &val, name, &val);
-  if (!SWFDEC_AS_VALUE_IS_OBJECT (*&val))
+  if (!SWFDEC_AS_VALUE_IS_OBJECT (val))
     return NULL;
-  if (!SWFDEC_IS_TEXT_FORMAT (SWFDEC_AS_VALUE_GET_OBJECT (*&val)->relay))
+  if (!SWFDEC_IS_TEXT_FORMAT (SWFDEC_AS_VALUE_GET_OBJECT (val)->relay))
     return NULL;
 
-  return SWFDEC_TEXT_FORMAT (SWFDEC_AS_VALUE_GET_OBJECT (*&val)->relay);
+  return SWFDEC_TEXT_FORMAT (SWFDEC_AS_VALUE_GET_OBJECT (val)->relay);
 }
 
 SwfdecTextFormat *
diff --git a/swfdec/swfdec_system_as.c b/swfdec/swfdec_system_as.c
index 139f161..023011d 100644
--- a/swfdec/swfdec_system_as.c
+++ b/swfdec/swfdec_system_as.c
@@ -306,11 +306,11 @@ swfdec_system_query (SwfdecAsContext *cx, SwfdecAsObject *object,
     queries[i].get (player, &val);
     swfdec_as_object_set_variable (object, queries[i].name, &val);
     if (queries[i].name == SWFDEC_AS_STR_screenResolutionY) {
-      g_string_append_printf (server, "x%d", (int) SWFDEC_AS_VALUE_GET_NUMBER (*&val));
+      g_string_append_printf (server, "x%d", (int) SWFDEC_AS_VALUE_GET_NUMBER (val));
     } else if (queries[i].name == SWFDEC_AS_STR_pixelAspectRatio) {
       char buffer[10];
       g_ascii_formatd (buffer, sizeof (buffer), "%.1f",
-	  SWFDEC_AS_VALUE_GET_NUMBER (*&val));
+	  SWFDEC_AS_VALUE_GET_NUMBER (val));
       g_string_append (server, "&AR=");
       g_string_append (server, buffer);
     } else if (queries[i].name == SWFDEC_AS_STR_manufacturer) {
@@ -323,12 +323,12 @@ swfdec_system_query (SwfdecAsContext *cx, SwfdecAsObject *object,
 	g_string_append_c (server, '&');
       g_string_append (server, queries[i].server_string);
       g_string_append_c (server, '=');
-      if (SWFDEC_AS_VALUE_IS_BOOLEAN (*&val)) {
-	g_string_append_c (server, SWFDEC_AS_VALUE_GET_BOOLEAN (*&val) ? 't' : 'f');
-      } else if (SWFDEC_AS_VALUE_IS_NUMBER (*&val)) {
-	g_string_append_printf (server, "%d", (int) SWFDEC_AS_VALUE_GET_NUMBER (*&val));
-      } else if (SWFDEC_AS_VALUE_IS_STRING (*&val)) {
-	char *s = swfdec_as_string_escape (cx, SWFDEC_AS_VALUE_GET_STRING (*&val));
+      if (SWFDEC_AS_VALUE_IS_BOOLEAN (val)) {
+	g_string_append_c (server, SWFDEC_AS_VALUE_GET_BOOLEAN (val) ? 't' : 'f');
+      } else if (SWFDEC_AS_VALUE_IS_NUMBER (val)) {
+	g_string_append_printf (server, "%d", (int) SWFDEC_AS_VALUE_GET_NUMBER (val));
+      } else if (SWFDEC_AS_VALUE_IS_STRING (val)) {
+	char *s = swfdec_as_string_escape (cx, SWFDEC_AS_VALUE_GET_STRING (val));
 	g_string_append (server, s);
 	g_free (s);
       } else {
diff --git a/swfdec/swfdec_text_field_movie_as.c b/swfdec/swfdec_text_field_movie_as.c
index 196d8c4..6c518af 100644
--- a/swfdec/swfdec_text_field_movie_as.c
+++ b/swfdec/swfdec_text_field_movie_as.c
@@ -306,8 +306,8 @@ swfdec_text_field_movie_set_restrict (SwfdecAsContext *cx,
   if (text->restrict_ == NULL && value == SWFDEC_AS_STR_EMPTY)
     return;
 
-  if (SWFDEC_AS_VALUE_IS_UNDEFINED (*&argv[0]) ||
-      SWFDEC_AS_VALUE_IS_NULL (*&argv[0])) {
+  if (SWFDEC_AS_VALUE_IS_UNDEFINED (argv[0]) ||
+      SWFDEC_AS_VALUE_IS_NULL (argv[0])) {
     text->restrict_ = NULL;
   } else {
     text->restrict_ = value;
@@ -411,8 +411,8 @@ swfdec_text_field_movie_do_set_variable (SwfdecAsContext *cx,
 
   SWFDEC_AS_CHECK (SWFDEC_TYPE_TEXT_FIELD_MOVIE, &text, "s", &value);
 
-  if (SWFDEC_AS_VALUE_IS_UNDEFINED (*&argv[0]) ||
-      SWFDEC_AS_VALUE_IS_NULL (*&argv[0]) || value == SWFDEC_AS_STR_EMPTY) {
+  if (SWFDEC_AS_VALUE_IS_UNDEFINED (argv[0]) ||
+      SWFDEC_AS_VALUE_IS_NULL (argv[0]) || value == SWFDEC_AS_STR_EMPTY) {
     value = NULL;
   }
 
@@ -752,8 +752,8 @@ swfdec_text_field_movie_set_autoSize (SwfdecAsContext *cx,
   if (argc < 1)
     return;
 
-  if (SWFDEC_AS_VALUE_IS_BOOLEAN (*&argv[0])) {
-    if (SWFDEC_AS_VALUE_GET_BOOLEAN (*&argv[0])) {
+  if (SWFDEC_AS_VALUE_IS_BOOLEAN (argv[0])) {
+    if (SWFDEC_AS_VALUE_GET_BOOLEAN (argv[0])) {
       text->auto_size = SWFDEC_AUTO_SIZE_LEFT;
     } else {
       text->auto_size = SWFDEC_AUTO_SIZE_NONE;
@@ -903,8 +903,8 @@ swfdec_text_field_movie_set_styleSheet (SwfdecAsContext *cx,
 
   swfdec_as_value_to_number (cx, &argv[0]);
 
-  if (SWFDEC_AS_VALUE_IS_OBJECT (*&argv[0])) {
-    value = SWFDEC_AS_VALUE_GET_OBJECT (*&argv[0]);
+  if (SWFDEC_AS_VALUE_IS_OBJECT (argv[0])) {
+    value = SWFDEC_AS_VALUE_GET_OBJECT (argv[0]);
   } else {
     value = NULL;
   }
@@ -1138,12 +1138,12 @@ swfdec_text_field_movie_setTextFormat (SwfdecAsContext *cx,
   if (start == end)
     return;
 
-  if (!SWFDEC_AS_VALUE_IS_OBJECT (*&argv[i]))
+  if (!SWFDEC_AS_VALUE_IS_OBJECT (argv[i]))
     return;
-  if (!SWFDEC_IS_TEXT_FORMAT (SWFDEC_AS_VALUE_GET_OBJECT (*&argv[i])->relay))
+  if (!SWFDEC_IS_TEXT_FORMAT (SWFDEC_AS_VALUE_GET_OBJECT (argv[i])->relay))
     return;
 
-  format = SWFDEC_TEXT_FORMAT (SWFDEC_AS_VALUE_GET_OBJECT (*&argv[i])->relay);
+  format = SWFDEC_TEXT_FORMAT (SWFDEC_AS_VALUE_GET_OBJECT (argv[i])->relay);
   start = g_utf8_offset_to_pointer (string, start) - string;
   end = g_utf8_offset_to_pointer (string, end) - string;
 
@@ -1391,9 +1391,9 @@ swfdec_text_field_movie_createTextField (SwfdecAsContext *cx,
   swfdec_movie_update (movie);
 
   swfdec_as_object_get_variable (cx->global, SWFDEC_AS_STR_TextField, &val);
-  if (!SWFDEC_AS_VALUE_IS_OBJECT (*&val))
+  if (!SWFDEC_AS_VALUE_IS_OBJECT (val))
     return;
-  fun_object = SWFDEC_AS_VALUE_GET_OBJECT (*&val);
+  fun_object = SWFDEC_AS_VALUE_GET_OBJECT (val);
   if (!SWFDEC_IS_AS_FUNCTION (fun_object->relay))
     return;
   fun = SWFDEC_AS_FUNCTION (fun_object->relay);
@@ -1432,13 +1432,13 @@ swfdec_text_field_movie_init_properties (SwfdecAsContext *cx)
   g_return_if_fail (SWFDEC_IS_AS_CONTEXT (cx));
 
   swfdec_as_object_get_variable (cx->global, SWFDEC_AS_STR_TextField, &val);
-  if (!SWFDEC_AS_VALUE_IS_OBJECT (*&val))
+  if (!SWFDEC_AS_VALUE_IS_OBJECT (val))
     return;
-  object = SWFDEC_AS_VALUE_GET_OBJECT (*&val);
+  object = SWFDEC_AS_VALUE_GET_OBJECT (val);
   swfdec_as_object_get_variable (object, SWFDEC_AS_STR_prototype, &val);
-  if (!SWFDEC_AS_VALUE_IS_OBJECT (*&val))
+  if (!SWFDEC_AS_VALUE_IS_OBJECT (val))
     return;
-  proto = SWFDEC_AS_VALUE_GET_OBJECT (*&val);
+  proto = SWFDEC_AS_VALUE_GET_OBJECT (val);
 
   // text
   swfdec_as_object_add_native_variable (proto, SWFDEC_AS_STR_text,
diff --git a/swfdec/swfdec_text_format.c b/swfdec/swfdec_text_format.c
index f9da9c2..1187d30 100644
--- a/swfdec/swfdec_text_format.c
+++ b/swfdec/swfdec_text_format.c
@@ -140,8 +140,8 @@ swfdec_text_format_set_string (SwfdecAsObject *object,
   swfdec_as_value_to_number (context, &argv[0]);
   s = swfdec_as_value_to_string (context, argv[0]);
 
-  if (SWFDEC_AS_VALUE_IS_UNDEFINED (*&argv[0]) ||
-      SWFDEC_AS_VALUE_IS_NULL (*&argv[0])) {
+  if (SWFDEC_AS_VALUE_IS_UNDEFINED (argv[0]) ||
+      SWFDEC_AS_VALUE_IS_NULL (argv[0])) {
     /* FIXME: reset to defaults here? */
     SWFDEC_TEXT_ATTRIBUTE_UNSET (format->values_set, property);
   } else {
@@ -192,8 +192,8 @@ swfdec_text_format_set_boolean (SwfdecAsObject *object,
   swfdec_as_value_to_number (context, &argv[0]);
   swfdec_as_value_to_string (context, argv[0]);
 
-  if (SWFDEC_AS_VALUE_IS_UNDEFINED (*&argv[0]) ||
-      SWFDEC_AS_VALUE_IS_NULL (*&argv[0])) {
+  if (SWFDEC_AS_VALUE_IS_UNDEFINED (argv[0]) ||
+      SWFDEC_AS_VALUE_IS_NULL (argv[0])) {
     SWFDEC_TEXT_ATTRIBUTE_UNSET (format->values_set, property);
   } else {
     G_STRUCT_MEMBER (gboolean, format, property_offsets[property]) =
@@ -275,8 +275,8 @@ swfdec_text_format_set_integer (SwfdecAsObject *object,
   if (argc < 1)
     return;
 
-  if (SWFDEC_AS_VALUE_IS_UNDEFINED (*&argv[0]) ||
-      SWFDEC_AS_VALUE_IS_NULL (*&argv[0])) {
+  if (SWFDEC_AS_VALUE_IS_UNDEFINED (argv[0]) ||
+      SWFDEC_AS_VALUE_IS_NULL (argv[0])) {
     SWFDEC_TEXT_ATTRIBUTE_UNSET (format->values_set, property);
   } else {
     G_STRUCT_MEMBER (int, format, property_offsets[property]) =
@@ -428,8 +428,8 @@ swfdec_text_format_do_set_color (SwfdecAsContext *cx, SwfdecAsObject *object,
   if (argc < 1)
     return;
 
-  if (SWFDEC_AS_VALUE_IS_UNDEFINED (*&argv[0]) ||
-      SWFDEC_AS_VALUE_IS_NULL (*&argv[0])) {
+  if (SWFDEC_AS_VALUE_IS_UNDEFINED (argv[0]) ||
+      SWFDEC_AS_VALUE_IS_NULL (argv[0])) {
     SWFDEC_TEXT_ATTRIBUTE_UNSET (format->values_set, SWFDEC_TEXT_ATTRIBUTE_COLOR);
   } else {
     format->attr.color = (unsigned) swfdec_as_value_to_integer (cx, &argv[0]);
@@ -624,8 +624,8 @@ swfdec_text_format_do_set_letter_spacing (SwfdecAsContext *cx,
   d = swfdec_as_value_to_number (cx, &argv[0]);
   swfdec_as_value_to_string (cx, argv[0]);
 
-  if (SWFDEC_AS_VALUE_IS_UNDEFINED (*&argv[0]) ||
-      SWFDEC_AS_VALUE_IS_NULL (*&argv[0]))
+  if (SWFDEC_AS_VALUE_IS_UNDEFINED (argv[0]) ||
+      SWFDEC_AS_VALUE_IS_NULL (argv[0]))
   {
     SWFDEC_TEXT_ATTRIBUTE_UNSET (format->values_set,
 	SWFDEC_TEXT_ATTRIBUTE_LETTER_SPACING);
@@ -714,23 +714,23 @@ swfdec_text_format_do_set_tab_stops (SwfdecAsContext *cx,
   swfdec_as_value_to_number (cx, &argv[0]);
   swfdec_as_value_to_string (cx, argv[0]);
 
-  if (SWFDEC_AS_VALUE_IS_UNDEFINED (*&argv[0]) ||
-      SWFDEC_AS_VALUE_IS_NULL (*&argv[0]))
+  if (SWFDEC_AS_VALUE_IS_UNDEFINED (argv[0]) ||
+      SWFDEC_AS_VALUE_IS_NULL (argv[0]))
   {
     g_free (format->attr.tab_stops);
     format->attr.tab_stops = NULL;
     format->attr.n_tab_stops = 0;
     SWFDEC_TEXT_ATTRIBUTE_UNSET (format->values_set, SWFDEC_TEXT_ATTRIBUTE_TAB_STOPS);
   }
-  else if (SWFDEC_AS_VALUE_IS_OBJECT (*&argv[0]) &&
-	SWFDEC_AS_VALUE_GET_OBJECT (*&argv[0])->array)
+  else if (SWFDEC_AS_VALUE_IS_OBJECT (argv[0]) &&
+	SWFDEC_AS_VALUE_GET_OBJECT (argv[0])->array)
   {
     SwfdecAsObject *array;
     SwfdecAsValue val;
     guint i;
     int len;
 
-    array = SWFDEC_AS_VALUE_GET_OBJECT (*&argv[0]);
+    array = SWFDEC_AS_VALUE_GET_OBJECT (argv[0]);
     len = swfdec_as_array_get_length (array);
 
     if (!SWFDEC_TEXT_ATTRIBUTE_IS_SET (format->values_set, SWFDEC_TEXT_ATTRIBUTE_TAB_STOPS)) {
@@ -748,12 +748,12 @@ swfdec_text_format_do_set_tab_stops (SwfdecAsContext *cx,
       format->attr.tab_stops[i] = swfdec_text_format_value_to_integer (cx, &val, TRUE);
     }
   }
-  else if (SWFDEC_AS_VALUE_IS_STRING (*&argv[0]))
+  else if (SWFDEC_AS_VALUE_IS_STRING (argv[0]))
   {
     gsize i;
 
     // special case: empty strings mean null
-    if (SWFDEC_AS_VALUE_GET_STRING (*&argv[0]) == SWFDEC_AS_STR_EMPTY) {
+    if (SWFDEC_AS_VALUE_GET_STRING (argv[0]) == SWFDEC_AS_STR_EMPTY) {
       g_free (format->attr.tab_stops);
       format->attr.tab_stops = NULL;
       format->attr.n_tab_stops = 0;
@@ -761,7 +761,7 @@ swfdec_text_format_do_set_tab_stops (SwfdecAsContext *cx,
     } else {
       int n = cx->version >= 8 ? G_MININT : 0;
       SWFDEC_TEXT_ATTRIBUTE_SET (format->values_set, SWFDEC_TEXT_ATTRIBUTE_TAB_STOPS);
-      format->attr.n_tab_stops = strlen (SWFDEC_AS_VALUE_GET_STRING (*&argv[0]));
+      format->attr.n_tab_stops = strlen (SWFDEC_AS_VALUE_GET_STRING (argv[0]));
       format->attr.tab_stops = g_new (guint, format->attr.n_tab_stops);
       for (i = 0; i < format->attr.n_tab_stops; i++) {
 	format->attr.tab_stops[i] = n;
@@ -950,13 +950,13 @@ swfdec_text_format_init_properties (SwfdecAsContext *cx)
   g_return_if_fail (SWFDEC_IS_AS_CONTEXT (cx));
 
   swfdec_as_object_get_variable (cx->global, SWFDEC_AS_STR_TextFormat, &val);
-  if (!SWFDEC_AS_VALUE_IS_OBJECT (*&val))
+  if (!SWFDEC_AS_VALUE_IS_OBJECT (val))
     return;
-  proto = SWFDEC_AS_VALUE_GET_OBJECT (*&val);
+  proto = SWFDEC_AS_VALUE_GET_OBJECT (val);
   swfdec_as_object_get_variable (proto, SWFDEC_AS_STR_prototype, &val);
-  if (!SWFDEC_AS_VALUE_IS_OBJECT (*&val))
+  if (!SWFDEC_AS_VALUE_IS_OBJECT (val))
     return;
-  proto = SWFDEC_AS_VALUE_GET_OBJECT (*&val);
+  proto = SWFDEC_AS_VALUE_GET_OBJECT (val);
 
   swfdec_as_object_add_native_variable (proto, SWFDEC_AS_STR_align,
       swfdec_text_format_do_get_align, swfdec_text_format_do_set_align);
diff --git a/swfdec/swfdec_transform_as.c b/swfdec/swfdec_transform_as.c
index 380f43d..6c2cf13 100644
--- a/swfdec/swfdec_transform_as.c
+++ b/swfdec/swfdec_transform_as.c
@@ -253,7 +253,7 @@ swfdec_transform_as_construct (SwfdecAsContext *cx, SwfdecAsObject *object,
   SWFDEC_AS_CHECK (0, NULL, "M", &movie);
 
   trans = g_object_new (SWFDEC_TYPE_TRANSFORM_AS, "context", cx, NULL);
-  trans->target = SWFDEC_AS_VALUE_GET_MOVIE (*&argv[0]);
+  trans->target = SWFDEC_AS_VALUE_GET_MOVIE (argv[0]);
   swfdec_as_object_set_relay (object, SWFDEC_AS_RELAY (trans));
   SWFDEC_AS_VALUE_SET_OBJECT (ret, object);
 }
diff --git a/swfdec/swfdec_video_movie_as.c b/swfdec/swfdec_video_movie_as.c
index 386726d..17bad0b 100644
--- a/swfdec/swfdec_video_movie_as.c
+++ b/swfdec/swfdec_video_movie_as.c
@@ -137,14 +137,14 @@ swfdec_video_movie_init_properties (SwfdecAsContext *cx)
   g_return_if_fail (SWFDEC_IS_AS_CONTEXT (cx));
 
   swfdec_as_object_get_variable (cx->global, SWFDEC_AS_STR_Video, &val);
-  if (!SWFDEC_AS_VALUE_IS_OBJECT (*&val))
+  if (!SWFDEC_AS_VALUE_IS_OBJECT (val))
     return;
-  video = SWFDEC_AS_VALUE_GET_OBJECT (*&val);
+  video = SWFDEC_AS_VALUE_GET_OBJECT (val);
 
   swfdec_as_object_get_variable (video, SWFDEC_AS_STR_prototype, &val);
-  if (!SWFDEC_AS_VALUE_IS_OBJECT (*&val))
+  if (!SWFDEC_AS_VALUE_IS_OBJECT (val))
     return;
-  proto = SWFDEC_AS_VALUE_GET_OBJECT (*&val);
+  proto = SWFDEC_AS_VALUE_GET_OBJECT (val);
 
   swfdec_as_object_add_native_variable (proto, SWFDEC_AS_STR_width, 
       swfdec_video_get_width, NULL);
diff --git a/swfdec/swfdec_xml.c b/swfdec/swfdec_xml.c
index ed20458..402f6cd 100644
--- a/swfdec/swfdec_xml.c
+++ b/swfdec/swfdec_xml.c
@@ -205,7 +205,7 @@ swfdec_xml_set_ignoreWhite (SwfdecAsContext *cx, SwfdecAsObject *object,
   SWFDEC_AS_CHECK (SWFDEC_TYPE_XML, &xml, "s", &ignore);
 
   // special case
-  if (SWFDEC_AS_VALUE_IS_UNDEFINED (*&argv[0]))
+  if (SWFDEC_AS_VALUE_IS_UNDEFINED (argv[0]))
     return;
 
   xml->ignore_white =
@@ -237,7 +237,7 @@ swfdec_xml_set_xmlDecl (SwfdecAsContext *cx, SwfdecAsObject *object,
   SWFDEC_AS_CHECK (SWFDEC_TYPE_XML, &xml, "s", &s);
 
   // special case
-  if (SWFDEC_AS_VALUE_IS_UNDEFINED (*&argv[0]))
+  if (SWFDEC_AS_VALUE_IS_UNDEFINED (argv[0]))
     return;
 
   xml->xml_decl = s;
@@ -268,7 +268,7 @@ swfdec_xml_set_docTypeDecl (SwfdecAsContext *cx, SwfdecAsObject *object,
   SWFDEC_AS_CHECK (SWFDEC_TYPE_XML, &xml, "s", &s);
 
   // special case
-  if (SWFDEC_AS_VALUE_IS_UNDEFINED (*&argv[0]))
+  if (SWFDEC_AS_VALUE_IS_UNDEFINED (argv[0]))
     return;
 
   xml->doc_type_decl = s;
@@ -295,7 +295,7 @@ swfdec_xml_set_contentType (SwfdecAsContext *cx, SwfdecAsObject *object,
   SWFDEC_AS_CHECK (SWFDEC_TYPE_XML, &xml, "v", &val);
 
   // special case
-  if (SWFDEC_AS_VALUE_IS_UNDEFINED (*&val))
+  if (SWFDEC_AS_VALUE_IS_UNDEFINED (val))
     return;
 
   xml->content_type = val;
@@ -322,7 +322,7 @@ swfdec_xml_set_loaded (SwfdecAsContext *cx, SwfdecAsObject *object,
   SWFDEC_AS_CHECK (SWFDEC_TYPE_XML, &xml, "s", &ignore);
 
   // special case
-  if (SWFDEC_AS_VALUE_IS_UNDEFINED (*&argv[0]))
+  if (SWFDEC_AS_VALUE_IS_UNDEFINED (argv[0]))
     return;
 
   SWFDEC_AS_VALUE_SET_BOOLEAN (&xml->loaded,
@@ -351,7 +351,7 @@ swfdec_xml_set_status (SwfdecAsContext *cx, SwfdecAsObject *object,
   SWFDEC_AS_CHECK (SWFDEC_TYPE_XML, &xml, "s", &ignore);
 
   // special case
-  if (SWFDEC_AS_VALUE_IS_UNDEFINED (*&argv[0]))
+  if (SWFDEC_AS_VALUE_IS_UNDEFINED (argv[0]))
     return;
 
   d = swfdec_as_value_to_number (cx, &argv[0]);
@@ -478,8 +478,8 @@ swfdec_xml_add_id_map (SwfdecXml *xml, SwfdecXmlNode *node, const char *id)
   if (context->version >= 8) {
     if (swfdec_as_object_get_variable (object,
 	  SWFDEC_AS_STR_idMap, &val)) {
-      if (SWFDEC_AS_VALUE_IS_OBJECT (*&val)) {
-	object = SWFDEC_AS_VALUE_GET_OBJECT (*&val);
+      if (SWFDEC_AS_VALUE_IS_OBJECT (val)) {
+	object = SWFDEC_AS_VALUE_GET_OBJECT (val);
       } else {
 	return;
       }
@@ -792,7 +792,7 @@ swfdec_xml_do_parseXML (SwfdecAsContext *cx, SwfdecAsObject *object, guint argc,
 
   SWFDEC_AS_CHECK (SWFDEC_TYPE_XML, &xml, "s", &s);
 
-  if (SWFDEC_AS_VALUE_IS_UNDEFINED (*&argv[0]))
+  if (SWFDEC_AS_VALUE_IS_UNDEFINED (argv[0]))
     return;
 
   swfdec_xml_parseXML (xml, s);
@@ -810,7 +810,7 @@ swfdec_xml_createElement (SwfdecAsContext *cx, SwfdecAsObject *object,
   SWFDEC_AS_CHECK (SWFDEC_TYPE_XML, &xml, "s", &s);
 
   // special case
-  if (SWFDEC_AS_VALUE_IS_UNDEFINED (*&argv[0]))
+  if (SWFDEC_AS_VALUE_IS_UNDEFINED (argv[0]))
     return;
 
   node = swfdec_xml_node_new (cx, SWFDEC_XML_NODE_ELEMENT, s);
@@ -830,7 +830,7 @@ swfdec_xml_createTextNode (SwfdecAsContext *cx, SwfdecAsObject *object,
   SWFDEC_AS_CHECK (SWFDEC_TYPE_XML, &xml, "s", &s);
 
   // special case
-  if (SWFDEC_AS_VALUE_IS_UNDEFINED (*&argv[0]))
+  if (SWFDEC_AS_VALUE_IS_UNDEFINED (argv[0]))
     return;
 
   node = swfdec_xml_node_new (cx, SWFDEC_XML_NODE_TEXT, s);
@@ -851,14 +851,14 @@ swfdec_xml_init_properties (SwfdecAsContext *cx)
   g_return_if_fail (SWFDEC_IS_AS_CONTEXT (cx));
 
   swfdec_as_object_get_variable (cx->global, SWFDEC_AS_STR_XML, &val);
-  if (!SWFDEC_AS_VALUE_IS_OBJECT (*&val))
+  if (!SWFDEC_AS_VALUE_IS_OBJECT (val))
     return;
-  xml = SWFDEC_AS_VALUE_GET_OBJECT (*&val);
+  xml = SWFDEC_AS_VALUE_GET_OBJECT (val);
 
   swfdec_as_object_get_variable (xml, SWFDEC_AS_STR_prototype, &val);
-  if (!SWFDEC_AS_VALUE_IS_OBJECT (*&val))
+  if (!SWFDEC_AS_VALUE_IS_OBJECT (val))
     return;
-  proto = SWFDEC_AS_VALUE_GET_OBJECT (*&val);
+  proto = SWFDEC_AS_VALUE_GET_OBJECT (val);
 
   swfdec_as_object_add_native_variable (proto, SWFDEC_AS_STR_ignoreWhite,
       swfdec_xml_get_ignoreWhite, swfdec_xml_set_ignoreWhite);
@@ -896,7 +896,7 @@ swfdec_xml_construct (SwfdecAsContext *cx, SwfdecAsObject *object,
   if (!SWFDEC_IS_VALID_XML_NODE (xml))
     return;
 
-  if (argc >= 1 && !SWFDEC_AS_VALUE_IS_UNDEFINED (*&argv[0])) {
+  if (argc >= 1 && !SWFDEC_AS_VALUE_IS_UNDEFINED (argv[0])) {
     swfdec_xml_parseXML (xml, swfdec_as_value_to_string (cx, argv[0]));
   }
 }
diff --git a/swfdec/swfdec_xml_node.c b/swfdec/swfdec_xml_node.c
index 47eb72f..6a9d91d 100644
--- a/swfdec/swfdec_xml_node.c
+++ b/swfdec/swfdec_xml_node.c
@@ -95,11 +95,11 @@ swfdec_xml_node_get_child (SwfdecXmlNode *node, gint32 index_)
 
   swfdec_as_array_get_value (node->children, index_, &val);
 
-  g_return_val_if_fail (SWFDEC_AS_VALUE_IS_OBJECT (*&val), NULL);
+  g_return_val_if_fail (SWFDEC_AS_VALUE_IS_OBJECT (val), NULL);
   g_return_val_if_fail (SWFDEC_IS_VALID_XML_NODE (
-	SWFDEC_AS_VALUE_GET_OBJECT (*&val)->relay), NULL);
+	SWFDEC_AS_VALUE_GET_OBJECT (val)->relay), NULL);
 
-  return SWFDEC_XML_NODE (SWFDEC_AS_VALUE_GET_OBJECT (*&val)->relay);
+  return SWFDEC_XML_NODE (SWFDEC_AS_VALUE_GET_OBJECT (val)->relay);
 }
 
 static gint32
@@ -178,7 +178,7 @@ swfdec_xml_node_getNamespaceForPrefix (SwfdecXmlNode *node, const char *prefix)
 
   do {
     swfdec_as_object_get_variable (node->attributes, var, &val);
-    if (!SWFDEC_AS_VALUE_IS_UNDEFINED (*&val)) {
+    if (!SWFDEC_AS_VALUE_IS_UNDEFINED (val)) {
       return swfdec_as_value_to_string (swfdec_gc_object_get_context (node), val);
     }
     node = node->parent;
@@ -330,7 +330,7 @@ swfdec_xml_node_set_nodeName (SwfdecAsContext *cx, SwfdecAsObject *object,
     return;
 
   // special case
-  if (SWFDEC_AS_VALUE_IS_UNDEFINED (*&argv[0]))
+  if (SWFDEC_AS_VALUE_IS_UNDEFINED (argv[0]))
     return;
 
   node->name = name;
@@ -1026,14 +1026,14 @@ swfdec_xml_node_init_properties (SwfdecAsContext *cx)
   g_return_if_fail (SWFDEC_IS_AS_CONTEXT (cx));
 
   swfdec_as_object_get_variable (cx->global, SWFDEC_AS_STR_XMLNode, &val);
-  if (!SWFDEC_AS_VALUE_IS_OBJECT (*&val))
+  if (!SWFDEC_AS_VALUE_IS_OBJECT (val))
     return;
-  node = SWFDEC_AS_VALUE_GET_OBJECT (*&val);
+  node = SWFDEC_AS_VALUE_GET_OBJECT (val);
 
   swfdec_as_object_get_variable (node, SWFDEC_AS_STR_prototype, &val);
-  if (!SWFDEC_AS_VALUE_IS_OBJECT (*&val))
+  if (!SWFDEC_AS_VALUE_IS_OBJECT (val))
     return;
-  proto = SWFDEC_AS_VALUE_GET_OBJECT (*&val);
+  proto = SWFDEC_AS_VALUE_GET_OBJECT (val);
 
   swfdec_as_object_add_native_variable (proto, SWFDEC_AS_STR_nodeType,
       swfdec_xml_node_get_nodeType, NULL);
@@ -1109,8 +1109,8 @@ swfdec_xml_node_construct (SwfdecAsContext *cx, SwfdecAsObject *object,
 
   SWFDEC_AS_CHECK (0, NULL, "is", &type, &value);
 
-  if (SWFDEC_AS_VALUE_IS_UNDEFINED (*&argv[0]) ||
-      SWFDEC_AS_VALUE_IS_UNDEFINED (*&argv[1]))
+  if (SWFDEC_AS_VALUE_IS_UNDEFINED (argv[0]) ||
+      SWFDEC_AS_VALUE_IS_UNDEFINED (argv[1]))
     return;
 
   swfdec_xml_node_init_properties (cx);
commit 8cc3be6266af545379e9db729da35c54947b1f0c
Author: Benjamin Otte <otte at gnome.org>
Date:   Thu Nov 6 11:52:50 2008 +0100

    move dereferencing out of SwfdecAsValue macros

diff --git a/swfdec/swfdec_amf.c b/swfdec/swfdec_amf.c
index ec42946..1160719 100644
--- a/swfdec/swfdec_amf.c
+++ b/swfdec/swfdec_amf.c
@@ -70,7 +70,7 @@ swfdec_amf_parse_properties (SwfdecAsContext *context, SwfdecBits *bits, SwfdecA
 
     if (!swfdec_amf_parse_string (context, bits, &val))
       return FALSE;
-    name = SWFDEC_AS_VALUE_GET_STRING (&val);
+    name = SWFDEC_AS_VALUE_GET_STRING (*&val);
     type = swfdec_bits_get_u8 (bits);
     if (type == SWFDEC_AMF_END_OBJECT)
       break;
diff --git a/swfdec/swfdec_as_array.c b/swfdec/swfdec_as_array.c
index 7b4e370..a268a5b 100644
--- a/swfdec/swfdec_as_array.c
+++ b/swfdec/swfdec_as_array.c
@@ -721,11 +721,11 @@ swfdec_as_array_concat (SwfdecAsContext *cx, SwfdecAsObject *object,
   swfdec_as_array_append_array (array_new, object);
 
   for (j = 0; j < argc; j++) {
-    if (SWFDEC_AS_VALUE_IS_OBJECT (&argv[j]) &&
-	SWFDEC_AS_VALUE_GET_OBJECT (&argv[j])->array)
+    if (SWFDEC_AS_VALUE_IS_OBJECT (*&argv[j]) &&
+	SWFDEC_AS_VALUE_GET_OBJECT (*&argv[j])->array)
     {
       swfdec_as_array_append_array (array_new,
-	  SWFDEC_AS_VALUE_GET_OBJECT (&argv[j]));
+	  SWFDEC_AS_VALUE_GET_OBJECT (*&argv[j]));
     }
     else
     {
@@ -863,14 +863,14 @@ swfdec_as_array_sort_compare_values (SwfdecAsContext *cx,
     retval = swfdec_as_value_to_integer (cx, &ret);
   }
   else if (options & SORT_OPTION_NUMERIC &&
-      (SWFDEC_AS_VALUE_IS_NUMBER (a) ||
-       SWFDEC_AS_VALUE_IS_NUMBER (b)) &&
-      !SWFDEC_AS_VALUE_IS_UNDEFINED (a) &&
-      !SWFDEC_AS_VALUE_IS_UNDEFINED (b))
+      (SWFDEC_AS_VALUE_IS_NUMBER (*a) ||
+       SWFDEC_AS_VALUE_IS_NUMBER (*b)) &&
+      !SWFDEC_AS_VALUE_IS_UNDEFINED (*a) &&
+      !SWFDEC_AS_VALUE_IS_UNDEFINED (*b))
   {
-    if (!SWFDEC_AS_VALUE_IS_NUMBER (a)) {
+    if (!SWFDEC_AS_VALUE_IS_NUMBER (*a)) {
       retval = 1;
-    } else if (!SWFDEC_AS_VALUE_IS_NUMBER (b)) {
+    } else if (!SWFDEC_AS_VALUE_IS_NUMBER (*b)) {
       retval = -1;
     } else {
       double an = swfdec_as_value_to_number (cx, a);
@@ -1024,7 +1024,7 @@ swfdec_as_array_foreach_sort_collect (SwfdecAsObject *object,
   if (index_ == -1 || index_ >= collect_data->length)
     return TRUE;
 
-  if (SWFDEC_AS_VALUE_IS_UNDEFINED (value))
+  if (SWFDEC_AS_VALUE_IS_UNDEFINED (*value))
     return TRUE;
 
   collect_data->array[index_].value = *value;
@@ -1172,11 +1172,11 @@ swfdec_as_array_sort (SwfdecAsContext *cx, SwfdecAsObject *object, guint argc,
 
   pos = 0;
 
-  if (argc > pos && !SWFDEC_AS_VALUE_IS_NUMBER (&argv[pos])) {
+  if (argc > pos && !SWFDEC_AS_VALUE_IS_NUMBER (*&argv[pos])) {
     SwfdecAsFunction *fun;
-    if (!SWFDEC_AS_VALUE_IS_OBJECT (&argv[pos]) ||
+    if (!SWFDEC_AS_VALUE_IS_OBJECT (*&argv[pos]) ||
 	!SWFDEC_IS_AS_FUNCTION (
-	  fun = (SwfdecAsFunction *) SWFDEC_AS_VALUE_GET_OBJECT (&argv[pos])->relay))
+	  fun = (SwfdecAsFunction *) SWFDEC_AS_VALUE_GET_OBJECT (*&argv[pos])->relay))
 	return;
     custom_function = fun;
     pos++;
@@ -1210,9 +1210,9 @@ swfdec_as_array_sortOn (SwfdecAsContext *cx, SwfdecAsObject *object,
   if (argc < 1)
     return;
 
-  if (SWFDEC_AS_VALUE_IS_OBJECT (&argv[0])) {
+  if (SWFDEC_AS_VALUE_IS_OBJECT (*&argv[0])) {
 
-    array = SWFDEC_AS_VALUE_GET_OBJECT (&argv[0]);
+    array = SWFDEC_AS_VALUE_GET_OBJECT (*&argv[0]);
     if (!array->array) {
       SWFDEC_AS_VALUE_SET_OBJECT (ret, object);
       return;
@@ -1232,7 +1232,7 @@ swfdec_as_array_sortOn (SwfdecAsContext *cx, SwfdecAsObject *object,
 
     fields[i] = NULL;
   } else {
-    if (SWFDEC_AS_VALUE_IS_MOVIE (&argv[0])) {
+    if (SWFDEC_AS_VALUE_IS_MOVIE (*&argv[0])) {
       SWFDEC_FIXME ("how do we treat movies here?");
     }
     num_fields = 1;
@@ -1244,8 +1244,8 @@ swfdec_as_array_sortOn (SwfdecAsContext *cx, SwfdecAsObject *object,
   options = g_new0 (SortOption, num_fields);
 
   if (argc > 1) {
-    if (SWFDEC_AS_VALUE_IS_OBJECT (&argv[1])) {
-      array = SWFDEC_AS_VALUE_GET_OBJECT (&argv[1]);
+    if (SWFDEC_AS_VALUE_IS_OBJECT (*&argv[1])) {
+      array = SWFDEC_AS_VALUE_GET_OBJECT (*&argv[1]);
 
       if (array->array &&
 	swfdec_as_array_get_length (array) == num_fields) {
@@ -1284,7 +1284,7 @@ swfdec_as_array_construct (SwfdecAsContext *cx, SwfdecAsObject *object,
   swfdec_as_object_set_relay (object, NULL);
   object->array = TRUE;
 
-  if (argc == 1 && SWFDEC_AS_VALUE_IS_NUMBER (&argv[0])) {
+  if (argc == 1 && SWFDEC_AS_VALUE_IS_NUMBER (*&argv[0])) {
     int l = swfdec_as_value_to_integer (cx, &argv[0]);
     swfdec_as_array_set_length (object, l < 0 ? 0 : l);
   } else if (argc > 0) {
diff --git a/swfdec/swfdec_as_context.c b/swfdec/swfdec_as_context.c
index 8ab5c8c..0bead1e 100644
--- a/swfdec/swfdec_as_context.c
+++ b/swfdec/swfdec_as_context.c
@@ -1082,9 +1082,9 @@ swfdec_as_context_ASSetPropFlags (SwfdecAsContext *cx, SwfdecAsObject *object,
   if (argc < 3)
     return;
 
-  if (!SWFDEC_AS_VALUE_IS_COMPOSITE (&argv[0]))
+  if (!SWFDEC_AS_VALUE_IS_COMPOSITE (*&argv[0]))
     return;
-  obj = SWFDEC_AS_VALUE_GET_COMPOSITE (&argv[0]);
+  obj = SWFDEC_AS_VALUE_GET_COMPOSITE (*&argv[0]);
   flags[0] = swfdec_as_value_to_integer (cx, &argv[2]);
   flags[1] = (argc > 3) ? swfdec_as_value_to_integer (cx, &argv[3]) : 0;
 
@@ -1094,7 +1094,7 @@ swfdec_as_context_ASSetPropFlags (SwfdecAsContext *cx, SwfdecAsObject *object,
     return;
   }
 
-  if (SWFDEC_AS_VALUE_IS_NULL (&argv[1])) {
+  if (SWFDEC_AS_VALUE_IS_NULL (*&argv[1])) {
     swfdec_as_object_foreach (obj, swfdec_as_context_ASSetPropFlags_foreach, flags);
   } else {
     char **split =
diff --git a/swfdec/swfdec_as_date.c b/swfdec/swfdec_as_date.c
index 5fea1f0..cd621ba 100644
--- a/swfdec/swfdec_as_date.c
+++ b/swfdec/swfdec_as_date.c
@@ -269,7 +269,7 @@ swfdec_as_date_value_to_number_and_integer (SwfdecAsContext *context,
   g_assert (num != NULL);
 
   // undefined == NAN here, even in version < 7
-  if (SWFDEC_AS_VALUE_IS_UNDEFINED (value)) {
+  if (SWFDEC_AS_VALUE_IS_UNDEFINED (*value)) {
     *d = NAN;
   } else {
     *d = swfdec_as_value_to_number (context, value);
@@ -763,7 +763,7 @@ swfdec_as_date_setTime (SwfdecAsContext *cx, SwfdecAsObject *object,
   SWFDEC_AS_CHECK (SWFDEC_TYPE_AS_DATE, &date, "");
 
   if (argc > 0 &&
-      (cx->version > 6 || !SWFDEC_AS_VALUE_IS_UNDEFINED (&argv[0]))) {
+      (cx->version > 6 || !SWFDEC_AS_VALUE_IS_UNDEFINED (*&argv[0]))) {
     d = swfdec_as_value_to_number (cx, &argv[0]);
   } else {
     d = NAN;
@@ -950,7 +950,7 @@ swfdec_as_date_UTC (SwfdecAsContext *cx, SwfdecAsObject *object, guint argc,
 
   // special case: ignore undefined and everything after it
   for (i = 0; i < argc; i++) {
-    if (SWFDEC_AS_VALUE_IS_UNDEFINED (&argv[i])) {
+    if (SWFDEC_AS_VALUE_IS_UNDEFINED (*&argv[i])) {
       argc = i;
       break;
     }
@@ -1076,7 +1076,7 @@ swfdec_as_date_construct (SwfdecAsContext *cx, SwfdecAsObject *object,
 
   // special case: ignore undefined and everything after it
   for (i = 0; i < argc; i++) {
-    if (SWFDEC_AS_VALUE_IS_UNDEFINED (&argv[i])) {
+    if (SWFDEC_AS_VALUE_IS_UNDEFINED (*&argv[i])) {
       argc = i;
       break;
     }
diff --git a/swfdec/swfdec_as_frame.c b/swfdec/swfdec_as_frame.c
index 5fda086..bde7afd 100644
--- a/swfdec/swfdec_as_frame.c
+++ b/swfdec/swfdec_as_frame.c
@@ -341,7 +341,7 @@ void
 swfdec_as_frame_set_this (SwfdecAsFrame *frame, SwfdecAsObject *thisp)
 {
   g_return_if_fail (frame != NULL);
-  g_return_if_fail (SWFDEC_AS_VALUE_IS_UNDEFINED (&frame->thisp));
+  g_return_if_fail (SWFDEC_AS_VALUE_IS_UNDEFINED (*&frame->thisp));
   g_return_if_fail (thisp != NULL);
 
   g_assert (!SWFDEC_IS_AS_SUPER (thisp));
diff --git a/swfdec/swfdec_as_function.c b/swfdec/swfdec_as_function.c
index 3b2d587..ad1b35f 100644
--- a/swfdec/swfdec_as_function.c
+++ b/swfdec/swfdec_as_function.c
@@ -138,12 +138,12 @@ swfdec_as_function_apply (SwfdecAsContext *cx, SwfdecAsObject *object,
   if (thisp == NULL)
     thisp = swfdec_as_object_new_empty (cx);
 
-  if (argc > 1 && SWFDEC_AS_VALUE_IS_COMPOSITE (&argv[1])) {
+  if (argc > 1 && SWFDEC_AS_VALUE_IS_COMPOSITE (*&argv[1])) {
     int i;
     SwfdecAsObject *array;
     SwfdecAsValue val;
 
-    array = SWFDEC_AS_VALUE_GET_COMPOSITE (&argv[1]);
+    array = SWFDEC_AS_VALUE_GET_COMPOSITE (*&argv[1]);
 
     swfdec_as_object_get_variable (array, SWFDEC_AS_STR_length, &val);
     length = swfdec_as_value_to_integer (cx, &val);
diff --git a/swfdec/swfdec_as_internal.h b/swfdec/swfdec_as_internal.h
index 4ab5bb1..4f64951 100644
--- a/swfdec/swfdec_as_internal.h
+++ b/swfdec/swfdec_as_internal.h
@@ -37,7 +37,7 @@ G_BEGIN_DECLS
 #define SWFDEC_AS_OBJECT_PROTOTYPE_RECURSION_LIMIT 256
 
 /* swfdec_as_types.h */
-#define SWFDEC_AS_VALUE_IS_COMPOSITE(val) (SWFDEC_AS_VALUE_GET_TYPE (*(val)) >= SWFDEC_AS_TYPE_OBJECT)
+#define SWFDEC_AS_VALUE_IS_COMPOSITE(val) (SWFDEC_AS_VALUE_GET_TYPE (val) >= SWFDEC_AS_TYPE_OBJECT)
 #define SWFDEC_AS_VALUE_IS_PRIMITIVE(val) (!SWFDEC_AS_VALUE_IS_COMPOSITE(val))
 /* FIXME: ugly macro */
 #define SWFDEC_AS_VALUE_GET_COMPOSITE(val) (SWFDEC_AS_VALUE_IS_OBJECT (val) ? \
@@ -52,9 +52,9 @@ G_BEGIN_DECLS
   } \
 } G_STMT_END
 
-#define SWFDEC_AS_VALUE_IS_MOVIE(val) (SWFDEC_AS_VALUE_GET_TYPE (*(val)) == SWFDEC_AS_TYPE_MOVIE)
-#define SWFDEC_AS_VALUE_GET_MOVIE(val) (((SwfdecAsMovieValue *) SWFDEC_AS_VALUE_GET_VALUE (*(val)))->movie ? \
-    ((SwfdecAsMovieValue *) SWFDEC_AS_VALUE_GET_VALUE (*(val)))->movie : swfdec_as_movie_value_get (SWFDEC_AS_VALUE_GET_VALUE (*(val))))
+#define SWFDEC_AS_VALUE_IS_MOVIE(val) (SWFDEC_AS_VALUE_GET_TYPE (val) == SWFDEC_AS_TYPE_MOVIE)
+#define SWFDEC_AS_VALUE_GET_MOVIE(val) (((SwfdecAsMovieValue *) SWFDEC_AS_VALUE_GET_VALUE (val))->movie ? \
+    ((SwfdecAsMovieValue *) SWFDEC_AS_VALUE_GET_VALUE (val))->movie : swfdec_as_movie_value_get (SWFDEC_AS_VALUE_GET_VALUE (val)))
 #define SWFDEC_AS_VALUE_FROM_MOVIE(m) SWFDEC_AS_VALUE_COMBINE (m->as_value, SWFDEC_AS_TYPE_MOVIE)
 #define SWFDEC_AS_VALUE_SET_MOVIE(val,m) G_STMT_START { \
   SwfdecMovie *__m = (m); \
diff --git a/swfdec/swfdec_as_interpret.c b/swfdec/swfdec_as_interpret.c
index 13d3b52..0d2f55c 100644
--- a/swfdec/swfdec_as_interpret.c
+++ b/swfdec/swfdec_as_interpret.c
@@ -166,8 +166,8 @@ swfdec_value_to_frame (SwfdecAsContext *cx, SwfdecSpriteMovie *movie, SwfdecAsVa
 
   if (movie->sprite == NULL)
     return 0;
-  if (SWFDEC_AS_VALUE_IS_STRING (val)) {
-    const char *name = SWFDEC_AS_VALUE_GET_STRING (val);
+  if (SWFDEC_AS_VALUE_IS_STRING (*val)) {
+    const char *name = SWFDEC_AS_VALUE_GET_STRING (*val);
     double d;
     if (strchr (name, ':')) {
       SWFDEC_ERROR ("FIXME: handle targets");
@@ -178,7 +178,7 @@ swfdec_value_to_frame (SwfdecAsContext *cx, SwfdecSpriteMovie *movie, SwfdecAsVa
       frame = swfdec_sprite_get_frame (movie->sprite, name) + 1;
     else
       frame = d;
-  } else if (SWFDEC_AS_VALUE_IS_NUMBER (val)) {
+  } else if (SWFDEC_AS_VALUE_IS_NUMBER (*val)) {
     frame = swfdec_as_value_to_integer (cx, val);
   } else {
     SWFDEC_WARNING ("cannot convert value to frame number");
@@ -419,9 +419,9 @@ super_special_movie_lookup_magic (SwfdecAsContext *cx, SwfdecAsObject *o, const
   }
   if (!swfdec_as_object_get_variable (o, name, &val))
     return NULL;
-  if (!SWFDEC_AS_VALUE_IS_COMPOSITE (&val))
+  if (!SWFDEC_AS_VALUE_IS_COMPOSITE (*&val))
     return NULL;
-  return SWFDEC_AS_VALUE_GET_COMPOSITE (&val);
+  return SWFDEC_AS_VALUE_GET_COMPOSITE (*&val);
 }
 
 static SwfdecAsObject *
@@ -751,7 +751,7 @@ swfdec_action_get_member (SwfdecAsContext *cx, guint action, const guint8 *data,
     name = swfdec_as_value_to_string (cx, *swfdec_as_stack_peek (cx, 1));
     swfdec_as_object_get_variable (object, name, swfdec_as_stack_peek (cx, 2));
 #ifdef SWFDEC_WARN_MISSING_PROPERTIES
-    if (SWFDEC_AS_VALUE_IS_UNDEFINED (swfdec_as_stack_peek (cx, 2))) {
+    if (SWFDEC_AS_VALUE_IS_UNDEFINED (*swfdec_as_stack_peek (cx, 2))) {
 	SWFDEC_WARNING ("no variable named %s:%s", 
 	    object->relay ? G_OBJECT_TYPE_NAME (object->relay) : ":", name);
     }
@@ -766,8 +766,8 @@ static void
 swfdec_action_set_member (SwfdecAsContext *cx, guint action, const guint8 *data, guint len)
 {
   const char *name = swfdec_as_value_to_string (cx, *swfdec_as_stack_peek (cx, 2));
-  if (SWFDEC_AS_VALUE_IS_COMPOSITE (swfdec_as_stack_peek (cx, 3))) {
-    SwfdecAsObject *o = SWFDEC_AS_VALUE_GET_COMPOSITE (swfdec_as_stack_peek (cx, 3));
+  if (SWFDEC_AS_VALUE_IS_COMPOSITE (*swfdec_as_stack_peek (cx, 3))) {
+    SwfdecAsObject *o = SWFDEC_AS_VALUE_GET_COMPOSITE (*swfdec_as_stack_peek (cx, 3));
     if (o)
       swfdec_as_object_set_variable (o, name, swfdec_as_stack_peek (cx, 1));
   }
@@ -781,7 +781,7 @@ swfdec_action_trace (SwfdecAsContext *cx, guint action, const guint8 *data, guin
   const char *s;
 
   val = swfdec_as_stack_peek (cx, 1);
-  if (SWFDEC_AS_VALUE_IS_UNDEFINED (val)) {
+  if (SWFDEC_AS_VALUE_IS_UNDEFINED (*val)) {
     s = SWFDEC_AS_STR_undefined;
   } else {
     s = swfdec_as_value_to_string (cx, *val);
@@ -798,15 +798,15 @@ swfdec_action_call (SwfdecAsContext *cx, guint n_args, SwfdecAsObject *super)
   SwfdecAsFunction *fun;
   SwfdecAsObject *thisp;
 
-  if (!SWFDEC_AS_VALUE_IS_OBJECT (swfdec_as_stack_peek (cx, 1)))
+  if (!SWFDEC_AS_VALUE_IS_OBJECT (*swfdec_as_stack_peek (cx, 1)))
     goto error;
-  fun = (SwfdecAsFunction *) (SWFDEC_AS_VALUE_GET_OBJECT (swfdec_as_stack_peek (cx, 1))->relay);
+  fun = (SwfdecAsFunction *) (SWFDEC_AS_VALUE_GET_OBJECT (*swfdec_as_stack_peek (cx, 1))->relay);
   if (!SWFDEC_IS_AS_FUNCTION (fun))
     goto error;
-  if (!SWFDEC_AS_VALUE_IS_COMPOSITE (swfdec_as_stack_peek (cx, 2))) {
+  if (!SWFDEC_AS_VALUE_IS_COMPOSITE (*swfdec_as_stack_peek (cx, 2))) {
     thisp = NULL;
   } else {
-    thisp = SWFDEC_AS_VALUE_GET_COMPOSITE (swfdec_as_stack_peek (cx, 2));
+    thisp = SWFDEC_AS_VALUE_GET_COMPOSITE (*swfdec_as_stack_peek (cx, 2));
   }
   swfdec_as_stack_pop_n (cx, 2);
   /* sanitize argument count */
@@ -869,7 +869,7 @@ swfdec_action_call_method (SwfdecAsContext *cx, guint action, const guint8 *data
   val = swfdec_as_stack_peek (cx, 1);
   if (obj) {
     name = swfdec_as_value_to_string (cx, *val);
-    if (SWFDEC_AS_VALUE_IS_UNDEFINED (val) ||
+    if (SWFDEC_AS_VALUE_IS_UNDEFINED (*val) ||
 	name == SWFDEC_AS_STR_EMPTY) {
       SWFDEC_AS_VALUE_SET_UNDEFINED (swfdec_as_stack_peek (cx, 3));
       SWFDEC_AS_VALUE_SET_COMPOSITE (swfdec_as_stack_peek (cx, 2), obj);
@@ -880,8 +880,8 @@ swfdec_action_call_method (SwfdecAsContext *cx, guint action, const guint8 *data
       swfdec_as_object_get_variable_and_flags (obj, name, swfdec_as_stack_peek (cx, 2), NULL, &pobj);
     }
   } else {
-    if (SWFDEC_AS_VALUE_IS_STRING (val))
-      name = SWFDEC_AS_VALUE_GET_STRING (val);
+    if (SWFDEC_AS_VALUE_IS_STRING (*val))
+      name = SWFDEC_AS_VALUE_GET_STRING (*val);
     else
       name = "???";
     SWFDEC_AS_VALUE_SET_NULL (swfdec_as_stack_peek (cx, 3));
@@ -960,9 +960,9 @@ swfdec_action_add2_to_primitive (SwfdecAsValue *value)
   SwfdecAsObject *object;
   const char *name;
 
-  if (!SWFDEC_AS_VALUE_IS_OBJECT (value))
+  if (!SWFDEC_AS_VALUE_IS_OBJECT (*value))
     return;
-  object = SWFDEC_AS_VALUE_GET_OBJECT (value);
+  object = SWFDEC_AS_VALUE_GET_OBJECT (*value);
 
   if (SWFDEC_IS_AS_DATE (object->relay) && object->context->version > 5)
     name = SWFDEC_AS_STR_toString;
@@ -981,13 +981,13 @@ swfdec_action_add2 (SwfdecAsContext *cx, guint action, const guint8 *data, guint
   rtmp = *rval;
   ltmp = *lval;
   swfdec_action_add2_to_primitive (&rtmp);
-  if (!SWFDEC_AS_VALUE_IS_OBJECT (&rtmp))
+  if (!SWFDEC_AS_VALUE_IS_OBJECT (*&rtmp))
     rval = &rtmp;
   swfdec_action_add2_to_primitive (&ltmp);
-  if (!SWFDEC_AS_VALUE_IS_OBJECT (&ltmp))
+  if (!SWFDEC_AS_VALUE_IS_OBJECT (*&ltmp))
     lval = &ltmp;
 
-  if (SWFDEC_AS_VALUE_IS_STRING (lval) || SWFDEC_AS_VALUE_IS_STRING (rval)) {
+  if (SWFDEC_AS_VALUE_IS_STRING (*lval) || SWFDEC_AS_VALUE_IS_STRING (*rval)) {
     const char *lstr, *rstr;
     lstr = swfdec_as_value_to_string (cx, *lval);
     rstr = swfdec_as_value_to_string (cx, *rval);
@@ -1021,30 +1021,30 @@ swfdec_action_new_comparison (SwfdecAsContext *cx, guint action, const guint8 *d
   }
   /* comparison with object is always false */
   swfdec_as_value_to_primitive (lval);
-  if (SWFDEC_AS_VALUE_IS_OBJECT (lval)) {
+  if (SWFDEC_AS_VALUE_IS_OBJECT (*lval)) {
     swfdec_as_stack_pop (cx);
     SWFDEC_AS_VALUE_SET_BOOLEAN (swfdec_as_stack_peek (cx, 1), FALSE);
     return;
   }
   /* same for the rval */
   swfdec_as_value_to_primitive (rval);
-  if (SWFDEC_AS_VALUE_IS_OBJECT (rval)) {
+  if (SWFDEC_AS_VALUE_IS_OBJECT (*rval)) {
     swfdec_as_stack_pop (cx);
     SWFDEC_AS_VALUE_SET_BOOLEAN (swfdec_as_stack_peek (cx, 1), FALSE);
     return;
   }
   /* movieclips are not objects, but they evaluate to NaN, so we can handle them here */
-  if (SWFDEC_AS_VALUE_IS_MOVIE (rval) ||
-      SWFDEC_AS_VALUE_IS_MOVIE (lval)) {
+  if (SWFDEC_AS_VALUE_IS_MOVIE (*rval) ||
+      SWFDEC_AS_VALUE_IS_MOVIE (*lval)) {
     swfdec_as_stack_pop (cx);
     SWFDEC_AS_VALUE_SET_UNDEFINED (swfdec_as_stack_peek (cx, 1));
     return;
   }
   /* if both are strings, compare strings */
-  if (SWFDEC_AS_VALUE_IS_STRING (rval) &&
-      SWFDEC_AS_VALUE_IS_STRING (lval)) {
-    const char *ls = SWFDEC_AS_VALUE_GET_STRING (lval);
-    const char *rs = SWFDEC_AS_VALUE_GET_STRING (rval);
+  if (SWFDEC_AS_VALUE_IS_STRING (*rval) &&
+      SWFDEC_AS_VALUE_IS_STRING (*lval)) {
+    const char *ls = SWFDEC_AS_VALUE_GET_STRING (*lval);
+    const char *rs = SWFDEC_AS_VALUE_GET_STRING (*rval);
     int cmp;
     if (ls == SWFDEC_AS_STR_EMPTY) {
       cmp = rs == SWFDEC_AS_STR_EMPTY ? 0 : 1;
@@ -1158,7 +1158,7 @@ static void
 swfdec_as_interpret_load_variables_on_finish (SwfdecPlayer *player,
     const SwfdecAsValue *val, const char *text)
 {
-  SwfdecMovie *movie = SWFDEC_AS_VALUE_GET_MOVIE (val);
+  SwfdecMovie *movie = SWFDEC_AS_VALUE_GET_MOVIE (*val);
 
   if (movie == NULL)
     return;
@@ -1427,7 +1427,7 @@ swfdec_action_equals2_5 (SwfdecAsContext *cx, guint action, const guint8 *data,
   ltype = SWFDEC_AS_VALUE_GET_TYPE (ltmp);
   rtype = SWFDEC_AS_VALUE_GET_TYPE (rtmp);
   
-  if (SWFDEC_AS_VALUE_IS_COMPOSITE (&ltmp) && SWFDEC_AS_VALUE_IS_COMPOSITE (&rtmp)) {
+  if (SWFDEC_AS_VALUE_IS_COMPOSITE (*&ltmp) && SWFDEC_AS_VALUE_IS_COMPOSITE (*&rtmp)) {
     /* get movies compared */
     if (ltype == SWFDEC_AS_TYPE_MOVIE) {
       if (rtype == SWFDEC_AS_TYPE_MOVIE) {
@@ -1435,34 +1435,34 @@ swfdec_action_equals2_5 (SwfdecAsContext *cx, guint action, const guint8 *data,
       } else {
 	swfdec_as_value_to_primitive (rval);
       }
-      cond = SWFDEC_AS_VALUE_IS_MOVIE (rval) && 
-	SWFDEC_AS_VALUE_GET_MOVIE (&ltmp) == SWFDEC_AS_VALUE_GET_MOVIE (rval);
+      cond = SWFDEC_AS_VALUE_IS_MOVIE (*rval) && 
+	SWFDEC_AS_VALUE_GET_MOVIE (*&ltmp) == SWFDEC_AS_VALUE_GET_MOVIE (*rval);
       goto out;
     }
     if (rtype == SWFDEC_AS_TYPE_MOVIE) {
       swfdec_as_value_to_primitive (lval);
-      cond = SWFDEC_AS_VALUE_IS_MOVIE (lval) && 
-	SWFDEC_AS_VALUE_GET_MOVIE (&rtmp) == SWFDEC_AS_VALUE_GET_MOVIE (lval);
+      cond = SWFDEC_AS_VALUE_IS_MOVIE (*lval) && 
+	SWFDEC_AS_VALUE_GET_MOVIE (*&rtmp) == SWFDEC_AS_VALUE_GET_MOVIE (*lval);
       goto out;
     }
 
-    cond = SWFDEC_AS_VALUE_GET_OBJECT (lval) == SWFDEC_AS_VALUE_GET_OBJECT (rval);
+    cond = SWFDEC_AS_VALUE_GET_OBJECT (*lval) == SWFDEC_AS_VALUE_GET_OBJECT (*rval);
     goto out;
   }
 
   /* compare strings */
   if (ltype == SWFDEC_AS_TYPE_STRING && rtype == SWFDEC_AS_TYPE_STRING) {
-    cond = SWFDEC_AS_VALUE_GET_STRING (&ltmp) == SWFDEC_AS_VALUE_GET_STRING (&rtmp);
+    cond = SWFDEC_AS_VALUE_GET_STRING (*&ltmp) == SWFDEC_AS_VALUE_GET_STRING (*&rtmp);
     goto out;
   }
 
   /* convert to numbers */
-  if (SWFDEC_AS_VALUE_IS_OBJECT (&ltmp)) {
+  if (SWFDEC_AS_VALUE_IS_OBJECT (*&ltmp)) {
     l = swfdec_as_value_to_number (cx, lval);
   } else {
     l = swfdec_as_value_to_number (cx, &ltmp);
   }
-  if (SWFDEC_AS_VALUE_IS_OBJECT (&rtmp)) {
+  if (SWFDEC_AS_VALUE_IS_OBJECT (*&rtmp)) {
     r = swfdec_as_value_to_number (cx, rval);
   } else {
     r = swfdec_as_value_to_number (cx, &rtmp);
@@ -1500,23 +1500,23 @@ swfdec_action_equals2_6 (SwfdecAsContext *cx, guint action, const guint8 *data,
   rval = swfdec_as_stack_peek (cx, 1);
   lval = swfdec_as_stack_peek (cx, 2);
   /* check objects before anything else */
-  if (SWFDEC_AS_VALUE_IS_OBJECT (lval) && SWFDEC_AS_VALUE_IS_OBJECT (rval)) {
-    cond = SWFDEC_AS_VALUE_GET_OBJECT (lval) == SWFDEC_AS_VALUE_GET_OBJECT (rval);
+  if (SWFDEC_AS_VALUE_IS_OBJECT (*lval) && SWFDEC_AS_VALUE_IS_OBJECT (*rval)) {
+    cond = SWFDEC_AS_VALUE_GET_OBJECT (*lval) == SWFDEC_AS_VALUE_GET_OBJECT (*rval);
     goto out;
   }
   swfdec_as_value_to_primitive (lval);
   swfdec_as_value_to_primitive (rval);
   
   /* check if we have equal movieclips */
-  if (SWFDEC_AS_VALUE_IS_MOVIE (lval)) {
-    cond = SWFDEC_AS_VALUE_IS_MOVIE (rval) &&
-      SWFDEC_AS_VALUE_GET_MOVIE (lval) == SWFDEC_AS_VALUE_GET_MOVIE (rval);
+  if (SWFDEC_AS_VALUE_IS_MOVIE (*lval)) {
+    cond = SWFDEC_AS_VALUE_IS_MOVIE (*rval) &&
+      SWFDEC_AS_VALUE_GET_MOVIE (*lval) == SWFDEC_AS_VALUE_GET_MOVIE (*rval);
     goto out;
   }
 
   /* now all composites compare false */
-  if (SWFDEC_AS_VALUE_IS_COMPOSITE (lval) || 
-      SWFDEC_AS_VALUE_IS_COMPOSITE (rval)) {
+  if (SWFDEC_AS_VALUE_IS_COMPOSITE (*lval) || 
+      SWFDEC_AS_VALUE_IS_COMPOSITE (*rval)) {
     cond = FALSE;
     goto out;
   }
@@ -1535,7 +1535,7 @@ swfdec_action_equals2_6 (SwfdecAsContext *cx, guint action, const guint8 *data,
 
   /* compare strings */
   if (ltype == SWFDEC_AS_TYPE_STRING && rtype == SWFDEC_AS_TYPE_STRING) {
-    cond = SWFDEC_AS_VALUE_GET_STRING (lval) == SWFDEC_AS_VALUE_GET_STRING (rval);
+    cond = SWFDEC_AS_VALUE_GET_STRING (*lval) == SWFDEC_AS_VALUE_GET_STRING (*rval);
     goto out;
   }
 
@@ -1582,24 +1582,24 @@ swfdec_action_strict_equals (SwfdecAsContext *cx, guint action, const guint8 *da
 	cond = TRUE;
 	break;
       case SWFDEC_AS_TYPE_BOOLEAN:
-	cond = SWFDEC_AS_VALUE_GET_BOOLEAN (rval) == SWFDEC_AS_VALUE_GET_BOOLEAN (lval);
+	cond = SWFDEC_AS_VALUE_GET_BOOLEAN (*rval) == SWFDEC_AS_VALUE_GET_BOOLEAN (*lval);
 	break;
       case SWFDEC_AS_TYPE_NUMBER:
 	{
 	  double l, r;
-	  r = SWFDEC_AS_VALUE_GET_NUMBER (rval);
-	  l = SWFDEC_AS_VALUE_GET_NUMBER (lval);
+	  r = SWFDEC_AS_VALUE_GET_NUMBER (*rval);
+	  l = SWFDEC_AS_VALUE_GET_NUMBER (*lval);
 	  cond = (l == r) || (isnan (l) && isnan (r));
 	}
 	break;
       case SWFDEC_AS_TYPE_STRING:
-	cond = SWFDEC_AS_VALUE_GET_STRING (rval) == SWFDEC_AS_VALUE_GET_STRING (lval);
+	cond = SWFDEC_AS_VALUE_GET_STRING (*rval) == SWFDEC_AS_VALUE_GET_STRING (*lval);
 	break;
       case SWFDEC_AS_TYPE_OBJECT:
-	cond = SWFDEC_AS_VALUE_GET_OBJECT (lval) == SWFDEC_AS_VALUE_GET_OBJECT (rval);
+	cond = SWFDEC_AS_VALUE_GET_OBJECT (*lval) == SWFDEC_AS_VALUE_GET_OBJECT (*rval);
 	break;
       case SWFDEC_AS_TYPE_MOVIE:
-	cond = SWFDEC_AS_VALUE_GET_MOVIE (lval) == SWFDEC_AS_VALUE_GET_MOVIE (rval);
+	cond = SWFDEC_AS_VALUE_GET_MOVIE (*lval) == SWFDEC_AS_VALUE_GET_MOVIE (*rval);
 	break;
       case SWFDEC_AS_TYPE_INT:
       default:
@@ -1715,8 +1715,8 @@ swfdec_action_new_object (SwfdecAsContext *cx, guint action, const guint8 *data,
   constructor = swfdec_as_stack_peek (cx, 1);
   n_args = swfdec_as_value_to_integer (cx, swfdec_as_stack_peek (cx, 2));
   n_args = MIN (swfdec_as_stack_get_size (cx) - 2, n_args);
-  if (!SWFDEC_AS_VALUE_IS_OBJECT (constructor) ||
-      !SWFDEC_IS_AS_FUNCTION (fun = (SwfdecAsFunction *) SWFDEC_AS_VALUE_GET_OBJECT (constructor)->relay)) {
+  if (!SWFDEC_AS_VALUE_IS_OBJECT (*constructor) ||
+      !SWFDEC_IS_AS_FUNCTION (fun = (SwfdecAsFunction *) SWFDEC_AS_VALUE_GET_OBJECT (*constructor)->relay)) {
     SWFDEC_WARNING ("not a constructor");
     goto fail;
   }
@@ -1745,17 +1745,17 @@ swfdec_action_new_method (SwfdecAsContext *cx, guint action, const guint8 *data,
   n_args = swfdec_as_value_to_integer (cx, swfdec_as_stack_peek (cx, 3));
   n_args = MIN (swfdec_as_stack_get_size (cx) - 3, n_args);
   if (name == SWFDEC_AS_STR_EMPTY ||
-      SWFDEC_AS_VALUE_IS_UNDEFINED (swfdec_as_stack_peek (cx, 1))) {
+      SWFDEC_AS_VALUE_IS_UNDEFINED (*swfdec_as_stack_peek (cx, 1))) {
   } else {
-    if (!SWFDEC_AS_VALUE_IS_COMPOSITE (constructor)) {
+    if (!SWFDEC_AS_VALUE_IS_COMPOSITE (*constructor)) {
       SWFDEC_WARNING ("NewMethod called without an object to get variable %s from", name);
       goto fail;
     }
-    swfdec_as_object_get_variable (SWFDEC_AS_VALUE_GET_COMPOSITE (constructor),
+    swfdec_as_object_get_variable (SWFDEC_AS_VALUE_GET_COMPOSITE (*constructor),
 	name, constructor);
   }
-  if (!SWFDEC_AS_VALUE_IS_OBJECT (constructor) ||
-      !SWFDEC_IS_AS_FUNCTION (fun = (SwfdecAsFunction *) SWFDEC_AS_VALUE_GET_OBJECT (constructor)->relay)) {
+  if (!SWFDEC_AS_VALUE_IS_OBJECT (*constructor) ||
+      !SWFDEC_IS_AS_FUNCTION (fun = (SwfdecAsFunction *) SWFDEC_AS_VALUE_GET_OBJECT (*constructor)->relay)) {
     SWFDEC_WARNING ("%s is not a constructor", name);
     goto fail;
   }
@@ -1896,8 +1896,8 @@ swfdec_action_define_function (SwfdecAsContext *cx, guint action,
      * With this knowledge we can inspect the topmost stack member, since
      * it will contain the name this function will soon be assigned to.
      */
-    if (SWFDEC_AS_VALUE_IS_STRING (swfdec_as_stack_peek (cx, 1)))
-      name = SWFDEC_AS_VALUE_GET_STRING (swfdec_as_stack_peek (cx, 1));
+    if (SWFDEC_AS_VALUE_IS_STRING (*swfdec_as_stack_peek (cx, 1)))
+      name = SWFDEC_AS_VALUE_GET_STRING (*swfdec_as_stack_peek (cx, 1));
   }
   if (name == NULL)
     name = "unnamed_function";
@@ -2018,11 +2018,11 @@ swfdec_action_target_path (SwfdecAsContext *cx, guint action, const guint8 *data
 
   val = swfdec_as_stack_peek (cx, 1);
 
-  if (!SWFDEC_AS_VALUE_IS_MOVIE (val)) {
+  if (!SWFDEC_AS_VALUE_IS_MOVIE (*val)) {
     SWFDEC_AS_VALUE_SET_UNDEFINED (val);
     return;
   }
-  s = swfdec_movie_get_path (SWFDEC_AS_VALUE_GET_MOVIE (val), TRUE);
+  s = swfdec_movie_get_path (SWFDEC_AS_VALUE_GET_MOVIE (*val), TRUE);
   SWFDEC_AS_VALUE_SET_STRING (val, swfdec_as_context_give_string (cx, s));
 }
 
@@ -2069,8 +2069,8 @@ swfdec_action_delete (SwfdecAsContext *cx, guint action, const guint8 *data, gui
   
   name = swfdec_as_value_to_string (cx, *swfdec_as_stack_peek (cx, 1));
   val = swfdec_as_stack_peek (cx, 2);
-  if (SWFDEC_AS_VALUE_IS_COMPOSITE (val)) {
-    SwfdecAsObject *o = SWFDEC_AS_VALUE_GET_COMPOSITE (val);
+  if (SWFDEC_AS_VALUE_IS_COMPOSITE (*val)) {
+    SwfdecAsObject *o = SWFDEC_AS_VALUE_GET_COMPOSITE (*val);
     if (o)
       success = swfdec_as_object_delete_variable (o, name) == SWFDEC_AS_DELETE_DELETED;
   }
@@ -2152,7 +2152,7 @@ swfdec_action_type_of (SwfdecAsContext *cx, guint action, const guint8 *data, gu
   SwfdecAsValue val;
   const char *type;
 
-  val = *swfdec_as_stack_peek (cx, 1);
+  val = *swfdec_as_stack_pop (cx);
   switch (SWFDEC_AS_VALUE_GET_TYPE (val)) {
     case SWFDEC_AS_TYPE_NUMBER:
       type = SWFDEC_AS_STR_number;
@@ -2171,7 +2171,7 @@ swfdec_action_type_of (SwfdecAsContext *cx, guint action, const guint8 *data, gu
       break;
     case SWFDEC_AS_TYPE_OBJECT:
       {
-	SwfdecAsObject *obj = SWFDEC_AS_VALUE_GET_OBJECT (&val);
+	SwfdecAsObject *obj = SWFDEC_AS_VALUE_GET_OBJECT (*&val);
 	if (SWFDEC_IS_AS_FUNCTION (obj->relay)) {
 	  type = SWFDEC_AS_STR_function;
 	} else {
@@ -2181,7 +2181,7 @@ swfdec_action_type_of (SwfdecAsContext *cx, guint action, const guint8 *data, gu
       break;
     case SWFDEC_AS_TYPE_MOVIE:
       {
-	SwfdecMovie *movie = SWFDEC_AS_VALUE_GET_MOVIE (&val);
+	SwfdecMovie *movie = SWFDEC_AS_VALUE_GET_MOVIE (*&val);
 	if (SWFDEC_IS_TEXT_FIELD_MOVIE (movie) &&
 	    movie->state == SWFDEC_MOVIE_STATE_RUNNING) {
 	  type = SWFDEC_AS_STR_object;
@@ -2196,7 +2196,7 @@ swfdec_action_type_of (SwfdecAsContext *cx, guint action, const guint8 *data, gu
       type = SWFDEC_AS_STR_EMPTY;
       break;
   }
-  SWFDEC_AS_VALUE_SET_STRING (&val, type);
+  SWFDEC_AS_VALUE_SET_STRING (swfdec_as_stack_push (cx), type);
 }
 
 static void
@@ -2227,9 +2227,9 @@ swfdec_action_is_instance_of (SwfdecAsObject *object,
 
   // FIXME: propflag tests are wrong, and we shouldn't get __proto__.prototype
   swfdec_as_object_get_variable (constructor, SWFDEC_AS_STR_prototype, &val);
-  if (!SWFDEC_AS_VALUE_IS_OBJECT (&val))
+  if (!SWFDEC_AS_VALUE_IS_OBJECT (*&val))
     return FALSE;
-  prototype = SWFDEC_AS_VALUE_GET_OBJECT (&val);
+  prototype = SWFDEC_AS_VALUE_GET_OBJECT (*&val);
 
   class = object;
   while ((class = swfdec_as_object_get_prototype (class)) != NULL) {
@@ -2252,15 +2252,15 @@ swfdec_action_instance_of (SwfdecAsContext *cx, guint action,
   SwfdecAsObject *object, *constructor;
 
   val = swfdec_as_stack_pop (cx);
-  if (SWFDEC_AS_VALUE_IS_OBJECT (val)) {
-    constructor = SWFDEC_AS_VALUE_GET_OBJECT (val);
+  if (SWFDEC_AS_VALUE_IS_OBJECT (*val)) {
+    constructor = SWFDEC_AS_VALUE_GET_OBJECT (*val);
   } else {
     constructor = NULL;
   }
 
   val = swfdec_as_stack_pop (cx);
-  if (SWFDEC_AS_VALUE_IS_COMPOSITE (val)) {
-    object = SWFDEC_AS_VALUE_GET_COMPOSITE (val);
+  if (SWFDEC_AS_VALUE_IS_COMPOSITE (*val)) {
+    object = SWFDEC_AS_VALUE_GET_COMPOSITE (*val);
   } else {
     object = NULL;
   }
@@ -2283,15 +2283,15 @@ swfdec_action_cast (SwfdecAsContext *cx, guint action, const guint8 *data,
   SwfdecAsObject *object, *constructor;
 
   val = swfdec_as_stack_pop (cx);
-  if (SWFDEC_AS_VALUE_IS_COMPOSITE (val)) {
-    object = SWFDEC_AS_VALUE_GET_COMPOSITE (val);
+  if (SWFDEC_AS_VALUE_IS_COMPOSITE (*val)) {
+    object = SWFDEC_AS_VALUE_GET_COMPOSITE (*val);
   } else {
     object = NULL;
   }
  
   val = swfdec_as_stack_pop (cx);
-  if (SWFDEC_AS_VALUE_IS_OBJECT (val)) {
-    constructor = SWFDEC_AS_VALUE_GET_OBJECT (val);
+  if (SWFDEC_AS_VALUE_IS_OBJECT (*val)) {
+    constructor = SWFDEC_AS_VALUE_GET_OBJECT (*val);
   } else {
     constructor = NULL;
   }
@@ -2319,11 +2319,11 @@ swfdec_action_implements (SwfdecAsContext *cx, guint action,
   swfdec_as_stack_ensure_size (cx, 2);
 
   val = swfdec_as_stack_pop (cx);
-  if (SWFDEC_AS_VALUE_IS_COMPOSITE (val)) {
-    object = SWFDEC_AS_VALUE_GET_COMPOSITE (val);
+  if (SWFDEC_AS_VALUE_IS_COMPOSITE (*val)) {
+    object = SWFDEC_AS_VALUE_GET_COMPOSITE (*val);
     swfdec_as_object_get_variable (object, SWFDEC_AS_STR_prototype, val);
-    if (SWFDEC_AS_VALUE_IS_OBJECT (val)) {
-      proto = SWFDEC_AS_VALUE_GET_OBJECT (val);
+    if (SWFDEC_AS_VALUE_IS_OBJECT (*val)) {
+      proto = SWFDEC_AS_VALUE_GET_OBJECT (*val);
     } else {
       proto = NULL;
     }
@@ -2347,10 +2347,10 @@ swfdec_action_implements (SwfdecAsContext *cx, guint action,
 
   for (i = 0; i < argc; i++) {
     swfdec_as_value_get_variable (cx, &argv[i], SWFDEC_AS_STR_prototype, val);
-    if (!SWFDEC_AS_VALUE_IS_OBJECT (val))
+    if (!SWFDEC_AS_VALUE_IS_OBJECT (*val))
       continue;
     proto->interfaces =
-      g_slist_prepend (proto->interfaces, SWFDEC_AS_VALUE_GET_OBJECT (val));
+      g_slist_prepend (proto->interfaces, SWFDEC_AS_VALUE_GET_OBJECT (*val));
   }
 }
 
@@ -2363,16 +2363,16 @@ swfdec_action_extends (SwfdecAsContext *cx, guint action, const guint8 *data, gu
 
   superclass = swfdec_as_stack_peek (cx, 1);
   subclass = swfdec_as_stack_peek (cx, 2);
-  if (!SWFDEC_AS_VALUE_IS_OBJECT (superclass) ||
-      !SWFDEC_IS_AS_FUNCTION (SWFDEC_AS_VALUE_GET_OBJECT (superclass)->relay)) {
+  if (!SWFDEC_AS_VALUE_IS_OBJECT (*superclass) ||
+      !SWFDEC_IS_AS_FUNCTION (SWFDEC_AS_VALUE_GET_OBJECT (*superclass)->relay)) {
     SWFDEC_ERROR ("superclass is not a function");
     goto fail;
   }
-  if (!SWFDEC_AS_VALUE_IS_COMPOSITE (subclass)) {
+  if (!SWFDEC_AS_VALUE_IS_COMPOSITE (*subclass)) {
     SWFDEC_ERROR ("subclass is not an object");
     goto fail;
   }
-  super = SWFDEC_AS_VALUE_GET_OBJECT (superclass);
+  super = SWFDEC_AS_VALUE_GET_OBJECT (*superclass);
   prototype = swfdec_as_object_new_empty (cx);
   swfdec_as_object_get_variable (super, SWFDEC_AS_STR_prototype, &proto);
   swfdec_as_object_set_variable_and_flags (prototype, SWFDEC_AS_STR___proto__, &proto,
@@ -2380,7 +2380,7 @@ swfdec_action_extends (SwfdecAsContext *cx, guint action, const guint8 *data, gu
   swfdec_as_object_set_variable_and_flags (prototype, SWFDEC_AS_STR___constructor__,
       superclass, SWFDEC_AS_VARIABLE_HIDDEN | SWFDEC_AS_VARIABLE_VERSION_6_UP);
   SWFDEC_AS_VALUE_SET_OBJECT (&proto, prototype);
-  swfdec_as_object_set_variable (SWFDEC_AS_VALUE_GET_COMPOSITE (subclass),
+  swfdec_as_object_set_variable (SWFDEC_AS_VALUE_GET_COMPOSITE (*subclass),
       SWFDEC_AS_STR_prototype, &proto);
 fail:
   swfdec_as_stack_pop_n (cx, 2);
@@ -2436,8 +2436,8 @@ swfdec_action_enumerate2 (SwfdecAsContext *cx, guint action, const guint8 *data,
   SwfdecAsObject *obj;
 
   val = swfdec_as_stack_peek (cx, 1);
-  if (!SWFDEC_AS_VALUE_IS_COMPOSITE (val) ||
-      (obj = SWFDEC_AS_VALUE_GET_COMPOSITE (val)) == NULL) {
+  if (!SWFDEC_AS_VALUE_IS_COMPOSITE (*val) ||
+      (obj = SWFDEC_AS_VALUE_GET_COMPOSITE (*val)) == NULL) {
     SWFDEC_WARNING ("Enumerate called without an object");
     SWFDEC_AS_VALUE_SET_UNDEFINED (val);
     return;
diff --git a/swfdec/swfdec_as_native_function.c b/swfdec/swfdec_as_native_function.c
index cd91597..e3f8ec3 100644
--- a/swfdec/swfdec_as_native_function.c
+++ b/swfdec/swfdec_as_native_function.c
@@ -339,8 +339,8 @@ swfdec_as_native_function_checkv (SwfdecAsContext *cx, SwfdecAsObject *object,
 	{
 	  SwfdecMovie *m;
 	  SwfdecMovie **arg = va_arg (varargs, SwfdecMovie **);
-	  if (SWFDEC_AS_VALUE_IS_MOVIE (&argv[i])) {
-	    m = SWFDEC_AS_VALUE_GET_MOVIE (&argv[i]);
+	  if (SWFDEC_AS_VALUE_IS_MOVIE (*&argv[i])) {
+	    m = SWFDEC_AS_VALUE_GET_MOVIE (*&argv[i]);
 	  } else {
 	    m = NULL;
 	  }
diff --git a/swfdec/swfdec_as_object.c b/swfdec/swfdec_as_object.c
index 4540cf2..2be0fc5 100644
--- a/swfdec/swfdec_as_object.c
+++ b/swfdec/swfdec_as_object.c
@@ -752,8 +752,8 @@ swfdec_as_object_set_variable_and_flags (SwfdecAsObject *object,
   }
 
   if (variable == SWFDEC_AS_STR___proto__) {
-    if (SWFDEC_AS_VALUE_IS_OBJECT(value)) {
-      object->prototype = SWFDEC_AS_VALUE_GET_OBJECT (value);
+    if (SWFDEC_AS_VALUE_IS_OBJECT (*value)) {
+      object->prototype = SWFDEC_AS_VALUE_GET_OBJECT (*value);
       object->prototype_flags = var->flags;
     } else {
       object->prototype = NULL;
@@ -922,7 +922,7 @@ swfdec_as_object_get_variable_and_flags (SwfdecAsObject *object,
     if (resolve == NULL) {
       var = swfdec_as_object_hash_lookup (cur, SWFDEC_AS_STR___resolve);
 
-      if (var != NULL && (context->version <= 6 || SWFDEC_AS_VALUE_IS_COMPOSITE (&var->value)))
+      if (var != NULL && (context->version <= 6 || SWFDEC_AS_VALUE_IS_COMPOSITE (*&var->value)))
 	resolve = cur;
     }
     cur = swfdec_as_object_get_prototype_internal (cur);
@@ -945,9 +945,9 @@ swfdec_as_object_get_variable_and_flags (SwfdecAsObject *object,
 
     var = swfdec_as_object_hash_lookup (resolve, SWFDEC_AS_STR___resolve);
     g_assert (var != NULL);
-    if (!SWFDEC_AS_VALUE_IS_OBJECT (&var->value))
+    if (!SWFDEC_AS_VALUE_IS_OBJECT (*&var->value))
       return FALSE;
-    fun = (SwfdecAsFunction *) (SWFDEC_AS_VALUE_GET_OBJECT (&var->value)->relay);
+    fun = (SwfdecAsFunction *) (SWFDEC_AS_VALUE_GET_OBJECT (*&var->value)->relay);
     if (!SWFDEC_IS_AS_FUNCTION (fun))
       return FALSE;
     SWFDEC_AS_VALUE_SET_STRING (&argv, variable);
@@ -1250,9 +1250,9 @@ swfdec_as_object_call (SwfdecAsObject *object, const char *name, guint argc,
   if (return_value)
     SWFDEC_AS_VALUE_SET_UNDEFINED (return_value);
   swfdec_as_object_get_variable (object, name, &tmp);
-  if (!SWFDEC_AS_VALUE_IS_OBJECT (&tmp))
+  if (!SWFDEC_AS_VALUE_IS_OBJECT (*&tmp))
     return FALSE;
-  fun = (SwfdecAsFunction *) SWFDEC_AS_VALUE_GET_OBJECT (&tmp)->relay;
+  fun = (SwfdecAsFunction *) SWFDEC_AS_VALUE_GET_OBJECT (*&tmp)->relay;
   if (!SWFDEC_IS_AS_FUNCTION (fun))
     return FALSE;
   swfdec_as_function_call (fun, object, argc, argv, return_value ? return_value : &tmp);
@@ -1331,11 +1331,11 @@ swfdec_as_object_set_constructor_by_namev (SwfdecAsObject *object,
   do {
     val = swfdec_as_object_peek_variable (cur, name);
     if (val == NULL ||
-	!SWFDEC_AS_VALUE_IS_OBJECT (val)) {
+	!SWFDEC_AS_VALUE_IS_OBJECT (*val)) {
       SWFDEC_WARNING ("could not find constructor %s", name);
       return NULL;
     }
-    cur = SWFDEC_AS_VALUE_GET_OBJECT (val);
+    cur = SWFDEC_AS_VALUE_GET_OBJECT (*val);
     name = va_arg (args, const char *);
   } while (name != NULL);
   swfdec_as_object_set_constructor (object, cur);
@@ -1445,14 +1445,14 @@ swfdec_as_object_addProperty (SwfdecAsContext *cx, SwfdecAsObject *object,
   if (argc < 3)
     return;
   name = swfdec_as_value_to_string (cx, argv[0]);
-  if (!SWFDEC_AS_VALUE_IS_OBJECT (&argv[1]) ||
-      !SWFDEC_IS_AS_FUNCTION ((get = (SwfdecAsFunction *) (SWFDEC_AS_VALUE_GET_OBJECT (&argv[1])->relay))))
+  if (!SWFDEC_AS_VALUE_IS_OBJECT (*&argv[1]) ||
+      !SWFDEC_IS_AS_FUNCTION ((get = (SwfdecAsFunction *) (SWFDEC_AS_VALUE_GET_OBJECT (*&argv[1])->relay))))
     return;
-  if (SWFDEC_AS_VALUE_IS_OBJECT (&argv[2])) {
-    set = (SwfdecAsFunction *) (SWFDEC_AS_VALUE_GET_OBJECT (&argv[2])->relay);
+  if (SWFDEC_AS_VALUE_IS_OBJECT (*&argv[2])) {
+    set = (SwfdecAsFunction *) (SWFDEC_AS_VALUE_GET_OBJECT (*&argv[2])->relay);
     if (!SWFDEC_IS_AS_FUNCTION (set))
       return;
-  } else if (SWFDEC_AS_VALUE_IS_NULL (&argv[2])) {
+  } else if (SWFDEC_AS_VALUE_IS_NULL (*&argv[2])) {
     set = NULL;
   } else {
     return;
@@ -1684,7 +1684,7 @@ swfdec_as_object_construct (SwfdecAsContext *cx, SwfdecAsObject *object,
     guint argc, SwfdecAsValue *argv, SwfdecAsValue *ret)
 {
   if (argc > 0) {
-    if (SWFDEC_AS_VALUE_IS_MOVIE (&argv[0])) {
+    if (SWFDEC_AS_VALUE_IS_MOVIE (*&argv[0])) {
       *ret = argv[0];
       return;
     } else {
diff --git a/swfdec/swfdec_as_relay.c b/swfdec/swfdec_as_relay.c
index 782a5c1..8a96573 100644
--- a/swfdec/swfdec_as_relay.c
+++ b/swfdec/swfdec_as_relay.c
@@ -107,9 +107,9 @@ swfdec_as_relay_call (SwfdecAsRelay *relay, const char *name, guint argc,
   if (return_value)
     SWFDEC_AS_VALUE_SET_UNDEFINED (return_value);
   swfdec_as_object_get_variable (relay->relay, name, &tmp);
-  if (!SWFDEC_AS_VALUE_IS_OBJECT (&tmp))
+  if (!SWFDEC_AS_VALUE_IS_OBJECT (*&tmp))
     return FALSE;
-  fun = (SwfdecAsFunction *) (SWFDEC_AS_VALUE_GET_OBJECT (&tmp)->relay);
+  fun = (SwfdecAsFunction *) (SWFDEC_AS_VALUE_GET_OBJECT (*&tmp)->relay);
   if (!SWFDEC_IS_AS_FUNCTION (fun))
     return FALSE;
   swfdec_as_function_call (fun, relay->relay, argc, argv, return_value ? return_value : &tmp);
diff --git a/swfdec/swfdec_as_script_function.c b/swfdec/swfdec_as_script_function.c
index ce1ac87..49811c0 100644
--- a/swfdec/swfdec_as_script_function.c
+++ b/swfdec/swfdec_as_script_function.c
@@ -64,7 +64,7 @@ swfdec_as_script_function_call (SwfdecAsFunction *function, SwfdecAsObject *this
     frame.original_target = script->target;
   }
   /* second check especially for super object */
-  if (thisp != NULL && SWFDEC_AS_VALUE_IS_UNDEFINED (&frame.thisp)) {
+  if (thisp != NULL && SWFDEC_AS_VALUE_IS_UNDEFINED (*&frame.thisp)) {
     swfdec_as_frame_set_this (&frame, swfdec_as_object_resolve (thisp));
   }
   frame.argc = n_args;
@@ -173,8 +173,8 @@ swfdec_as_script_function_new (SwfdecAsContext *context, SwfdecMovie *target,
   swfdec_as_object_set_variable_and_flags (proto, SWFDEC_AS_STR_constructor,
       &val, SWFDEC_AS_VARIABLE_HIDDEN | SWFDEC_AS_VARIABLE_PERMANENT);
   tmp = swfdec_as_object_peek_variable (context->global, SWFDEC_AS_STR_Object);
-  if (tmp && SWFDEC_AS_VALUE_IS_OBJECT (tmp)) {
-    tmp = swfdec_as_object_peek_variable (SWFDEC_AS_VALUE_GET_OBJECT (tmp),
+  if (tmp && SWFDEC_AS_VALUE_IS_OBJECT (*tmp)) {
+    tmp = swfdec_as_object_peek_variable (SWFDEC_AS_VALUE_GET_OBJECT (*tmp),
 	SWFDEC_AS_STR_prototype);
     if (tmp) {
       swfdec_as_object_set_variable_and_flags (proto, SWFDEC_AS_STR___proto__,
diff --git a/swfdec/swfdec_as_string.c b/swfdec/swfdec_as_string.c
index a5ea24a..3edea28 100644
--- a/swfdec/swfdec_as_string.c
+++ b/swfdec/swfdec_as_string.c
@@ -342,7 +342,7 @@ swfdec_as_string_split_5 (SwfdecAsContext *cx, SwfdecAsObject *object,
   arr = swfdec_as_array_new (cx);
   SWFDEC_AS_VALUE_SET_OBJECT (ret, arr);
   /* hi, i'm the special case */
-  if (argc < 1 || SWFDEC_AS_VALUE_IS_UNDEFINED (&argv[0])) {
+  if (argc < 1 || SWFDEC_AS_VALUE_IS_UNDEFINED (*&argv[0])) {
     delim = SWFDEC_AS_STR_COMMA;
   } else {
     delim = swfdec_as_value_to_string (cx, argv[0]);
@@ -352,7 +352,7 @@ swfdec_as_string_split_5 (SwfdecAsContext *cx, SwfdecAsObject *object,
     swfdec_as_array_push (arr, &val);
     return;
   }
-  if (argc > 1 && !SWFDEC_AS_VALUE_IS_UNDEFINED (&argv[1])) {
+  if (argc > 1 && !SWFDEC_AS_VALUE_IS_UNDEFINED (*&argv[1])) {
     swfdec_as_value_to_string (cx, argv[0]);
     count = swfdec_as_value_to_integer (cx, &argv[1]);
   } else {
@@ -394,7 +394,7 @@ swfdec_as_string_split_6 (SwfdecAsContext *cx, SwfdecAsObject *object,
   arr = swfdec_as_array_new (cx);
   SWFDEC_AS_VALUE_SET_OBJECT (ret, arr);
   /* hi, i'm the special case */
-  if (argc < 1 || SWFDEC_AS_VALUE_IS_UNDEFINED (&argv[0])) {
+  if (argc < 1 || SWFDEC_AS_VALUE_IS_UNDEFINED (*&argv[0])) {
     SWFDEC_AS_VALUE_SET_STRING (&val, str);
     swfdec_as_array_push (arr, &val);
     return;
@@ -407,7 +407,7 @@ swfdec_as_string_split_6 (SwfdecAsContext *cx, SwfdecAsObject *object,
     }
     return;
   }
-  if (argc > 1 && !SWFDEC_AS_VALUE_IS_UNDEFINED (&argv[1]))
+  if (argc > 1 && !SWFDEC_AS_VALUE_IS_UNDEFINED (*&argv[1]))
     count = swfdec_as_value_to_integer (cx, &argv[1]);
   else
     count = G_MAXINT;
@@ -520,7 +520,7 @@ swfdec_as_string_substr (SwfdecAsContext *cx, SwfdecAsObject *object,
 
   len = g_utf8_strlen (string, -1);
   
-  if (argc > 1 && !SWFDEC_AS_VALUE_IS_UNDEFINED (&argv[1])) {
+  if (argc > 1 && !SWFDEC_AS_VALUE_IS_UNDEFINED (*&argv[1])) {
     to = swfdec_as_value_to_integer (cx, &argv[1]);
     /* FIXME: wtf? */
     if (to < 0) {
@@ -554,7 +554,7 @@ swfdec_as_string_substring (SwfdecAsContext *cx, SwfdecAsObject *object,
   SWFDEC_AS_STRING_CHECK (&string, "i", &from);
 
   len = g_utf8_strlen (string, -1);
-  if (argc > 1 && !SWFDEC_AS_VALUE_IS_UNDEFINED (&argv[1])) {
+  if (argc > 1 && !SWFDEC_AS_VALUE_IS_UNDEFINED (*&argv[1])) {
     to = swfdec_as_value_to_integer (cx, &argv[1]);
   } else {
     to = len;
diff --git a/swfdec/swfdec_as_super.c b/swfdec/swfdec_as_super.c
index 52cbac8..f7472a9 100644
--- a/swfdec/swfdec_as_super.c
+++ b/swfdec/swfdec_as_super.c
@@ -49,8 +49,8 @@ swfdec_as_super_call (SwfdecAsFunction *function, SwfdecAsObject *thisp,
   }
 
   swfdec_as_object_get_variable (super->object, SWFDEC_AS_STR___constructor__, &val);
-  if (!SWFDEC_AS_VALUE_IS_OBJECT (&val) ||
-      !SWFDEC_IS_AS_FUNCTION (fun = (SwfdecAsFunction *) (SWFDEC_AS_VALUE_GET_OBJECT (&val)->relay)))
+  if (!SWFDEC_AS_VALUE_IS_OBJECT (*&val) ||
+      !SWFDEC_IS_AS_FUNCTION (fun = (SwfdecAsFunction *) (SWFDEC_AS_VALUE_GET_OBJECT (*&val)->relay)))
     return;
 
   if (construct) {
diff --git a/swfdec/swfdec_as_types.c b/swfdec/swfdec_as_types.c
index b3d34f1..edb4178 100644
--- a/swfdec/swfdec_as_types.c
+++ b/swfdec/swfdec_as_types.c
@@ -388,28 +388,28 @@ swfdec_as_value_to_string (SwfdecAsContext *context, SwfdecAsValue value)
 
   switch (SWFDEC_AS_VALUE_GET_TYPE (value)) {
     case SWFDEC_AS_TYPE_STRING:
-      return SWFDEC_AS_VALUE_GET_STRING (&value);
+      return SWFDEC_AS_VALUE_GET_STRING (*&value);
     case SWFDEC_AS_TYPE_UNDEFINED:
       if (context->version > 6)
 	return SWFDEC_AS_STR_undefined;
       else
 	return SWFDEC_AS_STR_EMPTY;
     case SWFDEC_AS_TYPE_BOOLEAN:
-      return SWFDEC_AS_VALUE_GET_BOOLEAN (&value) ? SWFDEC_AS_STR_true : SWFDEC_AS_STR_false;
+      return SWFDEC_AS_VALUE_GET_BOOLEAN (*&value) ? SWFDEC_AS_STR_true : SWFDEC_AS_STR_false;
     case SWFDEC_AS_TYPE_NULL:
       return SWFDEC_AS_STR_null;
     case SWFDEC_AS_TYPE_NUMBER:
-      return swfdec_as_double_to_string (context, SWFDEC_AS_VALUE_GET_NUMBER (&value));
+      return swfdec_as_double_to_string (context, SWFDEC_AS_VALUE_GET_NUMBER (*&value));
     case SWFDEC_AS_TYPE_OBJECT:
       {
-	SwfdecAsObject *object = SWFDEC_AS_VALUE_GET_OBJECT (&value);
+	SwfdecAsObject *object = SWFDEC_AS_VALUE_GET_OBJECT (*&value);
 	if (SWFDEC_IS_AS_STRING (object->relay)) {
 	  return SWFDEC_AS_STRING (object->relay)->string;
 	} else {
 	  SwfdecAsValue ret;
 	  swfdec_as_object_call (object, SWFDEC_AS_STR_toString, 0, NULL, &ret);
-	  if (SWFDEC_AS_VALUE_IS_STRING (&ret))
-	    return SWFDEC_AS_VALUE_GET_STRING (&ret);
+	  if (SWFDEC_AS_VALUE_IS_STRING (*&ret))
+	    return SWFDEC_AS_VALUE_GET_STRING (*&ret);
 	  else if (SWFDEC_IS_AS_SUPER (object->relay))
 	    return SWFDEC_AS_STR__type_Object_;
 	  else if (SWFDEC_IS_AS_FUNCTION (object->relay))
@@ -420,7 +420,7 @@ swfdec_as_value_to_string (SwfdecAsContext *context, SwfdecAsValue value)
       }
     case SWFDEC_AS_TYPE_MOVIE:
       {
-	SwfdecMovie *movie = SWFDEC_AS_VALUE_GET_MOVIE (&value);
+	SwfdecMovie *movie = SWFDEC_AS_VALUE_GET_MOVIE (*&value);
 	char *str;
 
 	if (movie == NULL)
@@ -462,9 +462,9 @@ swfdec_as_value_to_number (SwfdecAsContext *context, const SwfdecAsValue *value)
     case SWFDEC_AS_TYPE_NULL:
       return (context->version >= 7) ? NAN : 0.0;
     case SWFDEC_AS_TYPE_BOOLEAN:
-      return SWFDEC_AS_VALUE_GET_BOOLEAN (&tmp) ? 1 : 0;
+      return SWFDEC_AS_VALUE_GET_BOOLEAN (*&tmp) ? 1 : 0;
     case SWFDEC_AS_TYPE_NUMBER:
-      return SWFDEC_AS_VALUE_GET_NUMBER (&tmp);
+      return SWFDEC_AS_VALUE_GET_NUMBER (*&tmp);
     case SWFDEC_AS_TYPE_STRING:
       {
 	const char *s;
@@ -472,7 +472,7 @@ swfdec_as_value_to_number (SwfdecAsContext *context, const SwfdecAsValue *value)
 	double d;
 	
 	// FIXME: We should most likely copy Tamarin's code here (MathUtils.cpp)
-	s = SWFDEC_AS_VALUE_GET_STRING (&tmp);
+	s = SWFDEC_AS_VALUE_GET_STRING (*&tmp);
 	if (s == SWFDEC_AS_STR_EMPTY)
 	  return (context->version >= 5) ? NAN : 0.0;
 	if (context->version > 5 && s[0] == '0' &&
@@ -581,7 +581,7 @@ swfdec_as_value_to_object (SwfdecAsContext *context, const SwfdecAsValue *value)
       break;
     case SWFDEC_AS_TYPE_OBJECT:
     case SWFDEC_AS_TYPE_MOVIE:
-      return SWFDEC_AS_VALUE_GET_COMPOSITE (value);
+      return SWFDEC_AS_VALUE_GET_COMPOSITE (*value);
     case SWFDEC_AS_TYPE_INT:
     default:
       g_assert_not_reached ();
@@ -589,12 +589,12 @@ swfdec_as_value_to_object (SwfdecAsContext *context, const SwfdecAsValue *value)
   }
 
   swfdec_as_object_get_variable (context->global, s, &val);
-  if (!SWFDEC_AS_VALUE_IS_OBJECT (&val) ||
-      !SWFDEC_IS_AS_FUNCTION (fun = (SwfdecAsFunction *) (SWFDEC_AS_VALUE_GET_OBJECT (&val)->relay)))
+  if (!SWFDEC_AS_VALUE_IS_OBJECT (*&val) ||
+      !SWFDEC_IS_AS_FUNCTION (fun = (SwfdecAsFunction *) (SWFDEC_AS_VALUE_GET_OBJECT (*&val)->relay)))
     return NULL;
   swfdec_as_object_create (fun, 1, value, &val);
-  if (SWFDEC_AS_VALUE_IS_OBJECT (&val)) {
-    return SWFDEC_AS_VALUE_GET_OBJECT (&val);
+  if (SWFDEC_AS_VALUE_IS_OBJECT (*&val)) {
+    return SWFDEC_AS_VALUE_GET_OBJECT (*&val);
   } else {
     SWFDEC_ERROR ("did not construct an object");
     return NULL;
@@ -622,10 +622,10 @@ swfdec_as_value_to_boolean (SwfdecAsContext *context, const SwfdecAsValue *value
     case SWFDEC_AS_TYPE_NULL:
       return FALSE;
     case SWFDEC_AS_TYPE_BOOLEAN:
-      return SWFDEC_AS_VALUE_GET_BOOLEAN (value);
+      return SWFDEC_AS_VALUE_GET_BOOLEAN (*value);
     case SWFDEC_AS_TYPE_NUMBER:
       {
-	double d = SWFDEC_AS_VALUE_GET_NUMBER (value);
+	double d = SWFDEC_AS_VALUE_GET_NUMBER (*value);
 	return d != 0.0 && !isnan (d);
       }
     case SWFDEC_AS_TYPE_STRING:
@@ -633,7 +633,7 @@ swfdec_as_value_to_boolean (SwfdecAsContext *context, const SwfdecAsValue *value
 	double d = swfdec_as_value_to_number (context, value);
 	return d != 0.0 && !isnan (d);
       } else {
-	return SWFDEC_AS_VALUE_GET_STRING (value) != SWFDEC_AS_STR_EMPTY;
+	return SWFDEC_AS_VALUE_GET_STRING (*value) != SWFDEC_AS_STR_EMPTY;
       }
     case SWFDEC_AS_TYPE_OBJECT:
     case SWFDEC_AS_TYPE_MOVIE:
@@ -658,8 +658,8 @@ void
 swfdec_as_value_to_primitive (SwfdecAsValue *value)
 {
 
-  if (SWFDEC_AS_VALUE_IS_OBJECT (value)) {
-    swfdec_as_object_call (SWFDEC_AS_VALUE_GET_OBJECT (value), SWFDEC_AS_STR_valueOf,
+  if (SWFDEC_AS_VALUE_IS_OBJECT (*value)) {
+    swfdec_as_object_call (SWFDEC_AS_VALUE_GET_OBJECT (*value), SWFDEC_AS_STR_valueOf,
 	0, NULL, value);
   }
 }
@@ -706,7 +706,7 @@ swfdec_as_value_to_twips (SwfdecAsContext *context, const SwfdecAsValue *val,
   g_return_val_if_fail (val != NULL, FALSE);
   g_return_val_if_fail (result != NULL, FALSE);
 
-  if (SWFDEC_AS_VALUE_IS_UNDEFINED (val) || SWFDEC_AS_VALUE_IS_NULL (val))
+  if (SWFDEC_AS_VALUE_IS_UNDEFINED (*val) || SWFDEC_AS_VALUE_IS_NULL (*val))
     return FALSE;
 
   d = swfdec_as_value_to_number (context, val);
diff --git a/swfdec/swfdec_as_types.h b/swfdec/swfdec_as_types.h
index 1064d4c..58ae39e 100644
--- a/swfdec/swfdec_as_types.h
+++ b/swfdec/swfdec_as_types.h
@@ -68,13 +68,13 @@ typedef struct _SwfdecScript SwfdecScript;
 #define SWFDEC_AS_VALUE_COMBINE(val, type) (GPOINTER_TO_SIZE (val) | type)
 
 #define SWFDEC_AS_VALUE_UNDEFINED SWFDEC_AS_VALUE_COMBINE (NULL, SWFDEC_AS_TYPE_UNDEFINED)
-#define SWFDEC_AS_VALUE_IS_UNDEFINED(val) (SWFDEC_AS_VALUE_GET_TYPE (*(val)) == SWFDEC_AS_TYPE_UNDEFINED)
+#define SWFDEC_AS_VALUE_IS_UNDEFINED(val) (SWFDEC_AS_VALUE_GET_TYPE (val) == SWFDEC_AS_TYPE_UNDEFINED)
 #define SWFDEC_AS_VALUE_SET_UNDEFINED(val) *(val) = SWFDEC_AS_VALUE_UNDEFINED
 
 #define SWFDEC_AS_VALUE_FALSE SWFDEC_AS_VALUE_COMBINE(NULL, SWFDEC_AS_TYPE_BOOLEAN)
 #define SWFDEC_AS_VALUE_TRUE SWFDEC_AS_VALUE_COMBINE(GSIZE_TO_POINTER (1 << SWFDEC_AS_VALUE_TYPE_BITS), SWFDEC_AS_TYPE_BOOLEAN)
-#define SWFDEC_AS_VALUE_IS_BOOLEAN(val) (SWFDEC_AS_VALUE_GET_TYPE (*(val)) == SWFDEC_AS_TYPE_BOOLEAN)
-#define SWFDEC_AS_VALUE_GET_BOOLEAN(val) (SWFDEC_AS_VALUE_GET_VALUE (*(val)) != NULL)
+#define SWFDEC_AS_VALUE_IS_BOOLEAN(val) (SWFDEC_AS_VALUE_GET_TYPE (val) == SWFDEC_AS_TYPE_BOOLEAN)
+#define SWFDEC_AS_VALUE_GET_BOOLEAN(val) (SWFDEC_AS_VALUE_GET_VALUE (val) != NULL)
 #define SWFDEC_AS_VALUE_FROM_BOOLEAN(b) (b ? SWFDEC_AS_VALUE_TRUE : SWFDEC_AS_VALUE_FALSE)
 #define SWFDEC_AS_VALUE_SET_BOOLEAN(val,b) G_STMT_START { \
   gboolean __tmp = (b); \
@@ -87,22 +87,22 @@ struct _SwfdecAsDoubleValue {
   double		number;
 };
 
-#define SWFDEC_AS_VALUE_IS_NUMBER(val) (SWFDEC_AS_VALUE_GET_TYPE (*(val)) == SWFDEC_AS_TYPE_NUMBER)
-#define SWFDEC_AS_VALUE_GET_NUMBER(val) (((SwfdecAsDoubleValue *) SWFDEC_AS_VALUE_GET_VALUE(*(val)))->number)
+#define SWFDEC_AS_VALUE_IS_NUMBER(val) (SWFDEC_AS_VALUE_GET_TYPE (val) == SWFDEC_AS_TYPE_NUMBER)
+#define SWFDEC_AS_VALUE_GET_NUMBER(val) (((SwfdecAsDoubleValue *) SWFDEC_AS_VALUE_GET_VALUE(val))->number)
 
-#define SWFDEC_AS_VALUE_IS_STRING(val) (SWFDEC_AS_VALUE_GET_TYPE (*(val)) == SWFDEC_AS_TYPE_STRING)
-#define SWFDEC_AS_VALUE_GET_STRING(val) (((SwfdecAsStringValue *) SWFDEC_AS_VALUE_GET_VALUE(*(val)))->string)
+#define SWFDEC_AS_VALUE_IS_STRING(val) (SWFDEC_AS_VALUE_GET_TYPE (val) == SWFDEC_AS_TYPE_STRING)
+#define SWFDEC_AS_VALUE_GET_STRING(val) (((SwfdecAsStringValue *) SWFDEC_AS_VALUE_GET_VALUE(val))->string)
 #define SWFDEC_AS_VALUE_FROM_STRING(s) SWFDEC_AS_VALUE_COMBINE (((guint8 *) (s) - G_STRUCT_OFFSET (SwfdecAsStringValue, string)), SWFDEC_AS_TYPE_STRING)
 #define SWFDEC_AS_VALUE_SET_STRING(val,s) G_STMT_START { \
   *(val) = SWFDEC_AS_VALUE_FROM_STRING (s); \
 } G_STMT_END
 
 #define SWFDEC_AS_VALUE_NULL SWFDEC_AS_VALUE_COMBINE (NULL, SWFDEC_AS_TYPE_NULL)
-#define SWFDEC_AS_VALUE_IS_NULL(val) (SWFDEC_AS_VALUE_GET_TYPE (*(val)) == SWFDEC_AS_TYPE_NULL)
+#define SWFDEC_AS_VALUE_IS_NULL(val) (SWFDEC_AS_VALUE_GET_TYPE (val) == SWFDEC_AS_TYPE_NULL)
 #define SWFDEC_AS_VALUE_SET_NULL(val) *(val) = SWFDEC_AS_VALUE_NULL
 
-#define SWFDEC_AS_VALUE_IS_OBJECT(val) (SWFDEC_AS_VALUE_GET_TYPE (*(val)) == SWFDEC_AS_TYPE_OBJECT)
-#define SWFDEC_AS_VALUE_GET_OBJECT(val) ((SwfdecAsObject *) SWFDEC_AS_VALUE_GET_VALUE (*(val)))
+#define SWFDEC_AS_VALUE_IS_OBJECT(val) (SWFDEC_AS_VALUE_GET_TYPE (val) == SWFDEC_AS_TYPE_OBJECT)
+#define SWFDEC_AS_VALUE_GET_OBJECT(val) ((SwfdecAsObject *) SWFDEC_AS_VALUE_GET_VALUE (val))
 #define SWFDEC_AS_VALUE_FROM_OBJECT(o) SWFDEC_AS_VALUE_COMBINE (o, SWFDEC_AS_TYPE_OBJECT)
 #define SWFDEC_AS_VALUE_SET_OBJECT(val,o) G_STMT_START { \
   SwfdecAsObject *__o = (o); \
diff --git a/swfdec/swfdec_asbroadcaster.c b/swfdec/swfdec_asbroadcaster.c
index 734d7e6..4de8a42 100644
--- a/swfdec/swfdec_asbroadcaster.c
+++ b/swfdec/swfdec_asbroadcaster.c
@@ -51,10 +51,10 @@ broadcastMessage (SwfdecAsContext *cx, SwfdecAsObject *object,
   argc--;
 
   swfdec_as_object_get_variable (object, SWFDEC_AS_STR__listeners, &val);
-  if (!SWFDEC_AS_VALUE_IS_COMPOSITE (&val))
+  if (!SWFDEC_AS_VALUE_IS_COMPOSITE (*&val))
     return;
 
-  listeners = SWFDEC_AS_VALUE_GET_COMPOSITE (&val);
+  listeners = SWFDEC_AS_VALUE_GET_COMPOSITE (*&val);
   swfdec_as_object_get_variable (listeners, SWFDEC_AS_STR_length, &val);
   length = swfdec_as_value_to_integer (cx, &val);
 
diff --git a/swfdec/swfdec_bitmap_data.c b/swfdec/swfdec_bitmap_data.c
index 96a08a0..1c4bf69 100644
--- a/swfdec/swfdec_bitmap_data.c
+++ b/swfdec/swfdec_bitmap_data.c
@@ -238,9 +238,9 @@ swfdec_bitmap_data_get_rectangle (SwfdecAsContext *cx, SwfdecAsObject *object,
   swfdec_as_object_get_variable (cx->global, SWFDEC_AS_STR_flash, args);
   swfdec_as_value_get_variable (cx, args, SWFDEC_AS_STR_geom, args);
   swfdec_as_value_get_variable (cx, args, SWFDEC_AS_STR_Rectangle, args);
-  if (!SWFDEC_AS_VALUE_IS_OBJECT (args))
+  if (!SWFDEC_AS_VALUE_IS_OBJECT (*args))
     return;
-  o = SWFDEC_AS_VALUE_GET_OBJECT (args);
+  o = SWFDEC_AS_VALUE_GET_OBJECT (*args);
   if (!SWFDEC_IS_AS_FUNCTION (o->relay))
     return;
 
diff --git a/swfdec/swfdec_color_as.c b/swfdec/swfdec_color_as.c
index a610950..65a5ae4 100644
--- a/swfdec/swfdec_color_as.c
+++ b/swfdec/swfdec_color_as.c
@@ -40,10 +40,10 @@ swfdec_movie_color_get_movie (SwfdecAsObject *object)
     return NULL;
 
   swfdec_as_object_get_variable (object, SWFDEC_AS_STR_target, &val);
-  if (!SWFDEC_AS_VALUE_IS_MOVIE (&val))
+  if (!SWFDEC_AS_VALUE_IS_MOVIE (*&val))
     return NULL;
 
-  return SWFDEC_AS_VALUE_GET_MOVIE(&val);
+  return SWFDEC_AS_VALUE_GET_MOVIE (*&val);
 }
 
 SWFDEC_AS_NATIVE (700, 2, swfdec_movie_color_getRGB)
@@ -159,9 +159,9 @@ swfdec_movie_color_setTransform (SwfdecAsContext *cx, SwfdecAsObject *obj,
   if (movie == NULL)
     return;
 
-  if (!SWFDEC_AS_VALUE_IS_COMPOSITE (&argv[0]))
+  if (!SWFDEC_AS_VALUE_IS_COMPOSITE (*&argv[0]))
     return;
-  parse = SWFDEC_AS_VALUE_GET_COMPOSITE (&argv[0]);
+  parse = SWFDEC_AS_VALUE_GET_COMPOSITE (*&argv[0]);
   if (parse == NULL)
     return;
   parse_property (parse, SWFDEC_AS_STR_ra, &movie->color_transform.ra, TRUE);
diff --git a/swfdec/swfdec_file_reference.c b/swfdec/swfdec_file_reference.c
index d00a315..3708c59 100644
--- a/swfdec/swfdec_file_reference.c
+++ b/swfdec/swfdec_file_reference.c
@@ -113,8 +113,8 @@ swfdec_file_reference_construct (SwfdecAsContext *cx, SwfdecAsObject *object,
 
   SWFDEC_STUB ("FileReference");
 
-  if (argc > 0 && SWFDEC_AS_VALUE_IS_COMPOSITE (&argv[0])) {
-    target = SWFDEC_AS_VALUE_GET_COMPOSITE (&argv[0]);
+  if (argc > 0 && SWFDEC_AS_VALUE_IS_COMPOSITE (*&argv[0])) {
+    target = SWFDEC_AS_VALUE_GET_COMPOSITE (*&argv[0]);
   } else {
     target = object;
   }
diff --git a/swfdec/swfdec_interval.c b/swfdec/swfdec_interval.c
index 68fd8c9..38bea49 100644
--- a/swfdec/swfdec_interval.c
+++ b/swfdec/swfdec_interval.c
@@ -115,7 +115,7 @@ swfdec_interval_trigger (SwfdecTimeout *timeout)
   } else {
     /* we check that the relay's type is correct upon adding the interval */
     swfdec_as_function_call (SWFDEC_AS_FUNCTION (
-	  SWFDEC_AS_VALUE_GET_OBJECT (&interval->args[0])->relay),
+	  SWFDEC_AS_VALUE_GET_OBJECT (*&interval->args[0])->relay),
 	NULL, interval->n_args, &interval->args[1], &ret);
   }
   swfdec_sandbox_unuse (interval->sandbox);
diff --git a/swfdec/swfdec_load_object_as.c b/swfdec/swfdec_load_object_as.c
index d69db11..12fd632 100644
--- a/swfdec/swfdec_load_object_as.c
+++ b/swfdec/swfdec_load_object_as.c
@@ -36,7 +36,7 @@ swfdec_load_object_on_finish (SwfdecPlayer *player, const SwfdecAsValue *target,
   SwfdecAsObject *object;
   SwfdecAsValue val;
 
-  object = SWFDEC_AS_VALUE_GET_COMPOSITE (target);
+  object = SWFDEC_AS_VALUE_GET_COMPOSITE (*target);
   if (object == NULL)
     return;
 
@@ -57,7 +57,7 @@ swfdec_load_object_on_progress (SwfdecPlayer *player, const SwfdecAsValue *targe
   SwfdecAsObject *object;
   SwfdecAsValue val;
 
-  object = SWFDEC_AS_VALUE_GET_COMPOSITE (target);
+  object = SWFDEC_AS_VALUE_GET_COMPOSITE (*target);
   if (object == NULL)
     return;
   swfdec_as_value_set_number (cx, &val, loaded);
@@ -140,11 +140,11 @@ swfdec_load_object_as_get_headers (SwfdecAsObject *object, guint *header_count,
   if (!swfdec_as_object_get_variable (object, SWFDEC_AS_STR__customHeaders,
 	&val))
     goto end;
-  if (!SWFDEC_AS_VALUE_IS_COMPOSITE (&val)) {
+  if (!SWFDEC_AS_VALUE_IS_COMPOSITE (*&val)) {
     SWFDEC_WARNING ("_customHeaders is not an object");
     goto end;
   }
-  list = SWFDEC_AS_VALUE_GET_COMPOSITE (&val);
+  list = SWFDEC_AS_VALUE_GET_COMPOSITE (*&val);
 
   swfdec_as_object_get_variable (list, SWFDEC_AS_STR_length, &val);
   length = swfdec_as_value_to_integer (cx, &val);
diff --git a/swfdec/swfdec_movie.c b/swfdec/swfdec_movie.c
index 800526f..4f4bb00 100644
--- a/swfdec/swfdec_movie.c
+++ b/swfdec/swfdec_movie.c
@@ -1312,7 +1312,7 @@ swfdec_movie_constructor (GType type, guint n_construct_properties,
     movie->as_value = swfdec_as_movie_value_new (movie, name);
 
   /* make the resource ours if it doesn't belong to anyone yet */
-  if (SWFDEC_AS_VALUE_IS_UNDEFINED (&movie->resource->movie)) {
+  if (SWFDEC_AS_VALUE_IS_UNDEFINED (*&movie->resource->movie)) {
     g_assert (SWFDEC_IS_SPRITE_MOVIE (movie));
     SWFDEC_AS_VALUE_SET_MOVIE (&movie->resource->movie, movie);
   }
@@ -1670,7 +1670,7 @@ swfdec_movie_get_own_resource (SwfdecMovie *movie)
   if (!SWFDEC_IS_SPRITE_MOVIE (movie))
     return NULL;
 
-  if (SWFDEC_AS_VALUE_GET_MOVIE (&movie->resource->movie) != movie)
+  if (SWFDEC_AS_VALUE_GET_MOVIE (*&movie->resource->movie) != movie)
     return NULL;
 
   return movie->resource;
diff --git a/swfdec/swfdec_movie_as_drawing.c b/swfdec/swfdec_movie_as_drawing.c
index 681eb9f..390fea2 100644
--- a/swfdec/swfdec_movie_as_drawing.c
+++ b/swfdec/swfdec_movie_as_drawing.c
@@ -88,7 +88,7 @@ swfdec_sprite_movie_beginFill (SwfdecAsContext *cx, SwfdecAsObject *object,
   SWFDEC_AS_CHECK (SWFDEC_TYPE_MOVIE, &movie, "|ii", &color, &alpha);
   movie->draw_fill = NULL;
   
-  if (argc == 0 || SWFDEC_AS_VALUE_IS_UNDEFINED (&argv[0])) {
+  if (argc == 0 || SWFDEC_AS_VALUE_IS_UNDEFINED (*&argv[0])) {
     color = 0;
   } else {
     color = color & 0xFFFFFF;
@@ -219,20 +219,20 @@ swfdec_sprite_movie_beginGradientFill (SwfdecAsContext *cx, SwfdecAsObject *obje
     if (check > i) {
       const char *name = swfdec_as_integer_to_string (cx, i);
       if (swfdec_as_object_get_variable (colors, name, &v)
-	  && SWFDEC_AS_VALUE_IS_NUMBER (&v))
+	  && SWFDEC_AS_VALUE_IS_NUMBER (*&v))
 	c = swfdec_as_value_to_integer (cx, &v);
       else
 	c = 0;
       if (!swfdec_as_object_get_variable (alphas, name, &v)) {
 	a = c;
-      } else if (!SWFDEC_AS_VALUE_IS_NUMBER (&v)) {
+      } else if (!SWFDEC_AS_VALUE_IS_NUMBER (*&v)) {
 	a = 0;
       } else {
 	a = swfdec_as_value_to_integer (cx, &v);
       }
       if (!swfdec_as_object_get_variable (ratios, name, &v))
 	r = CLAMP (a, 0, 255);
-      else if (!SWFDEC_AS_VALUE_IS_NUMBER (&v))
+      else if (!SWFDEC_AS_VALUE_IS_NUMBER (*&v))
 	r = 0;
       else
 	r = swfdec_as_value_to_integer (cx, &v);
@@ -360,7 +360,7 @@ swfdec_sprite_movie_lineStyle (SwfdecAsContext *cx, SwfdecAsObject *object,
   SWFDEC_AS_CHECK (SWFDEC_TYPE_MOVIE, &movie, "i|ii", &width, &color, &alpha);
 
   movie->draw_line = NULL;
-  if (SWFDEC_AS_VALUE_IS_UNDEFINED (&argv[0]))
+  if (SWFDEC_AS_VALUE_IS_UNDEFINED (*&argv[0]))
     return;
   if (argc > 3) {
     SWFDEC_FIXME ("implement Flash 8 arguments to lineStyle");
diff --git a/swfdec/swfdec_movie_asprops.c b/swfdec/swfdec_movie_asprops.c
index 5a64766..333d4a3 100644
--- a/swfdec/swfdec_movie_asprops.c
+++ b/swfdec/swfdec_movie_asprops.c
@@ -422,8 +422,8 @@ mc_focusrect_set (SwfdecMovie *movie, const SwfdecAsValue *val)
   cx = swfdec_gc_object_get_context (movie);
   actor = SWFDEC_ACTOR (movie);
 
-  if (SWFDEC_AS_VALUE_IS_UNDEFINED (val) ||
-      SWFDEC_AS_VALUE_IS_NULL (val)) {
+  if (SWFDEC_AS_VALUE_IS_UNDEFINED (*val) ||
+      SWFDEC_AS_VALUE_IS_NULL (*val)) {
     if (movie->parent == NULL)
       return;
     b = SWFDEC_FLASH_MAYBE;
diff --git a/swfdec/swfdec_net_connection.c b/swfdec/swfdec_net_connection.c
index b601932..f44f9b6 100644
--- a/swfdec/swfdec_net_connection.c
+++ b/swfdec/swfdec_net_connection.c
@@ -106,9 +106,9 @@ swfdec_net_connection_do_connect (SwfdecAsContext *cx, SwfdecAsObject *object,
 
   SWFDEC_AS_CHECK (SWFDEC_TYPE_NET_CONNECTION, &conn, "v", &val);
 
-  if (SWFDEC_AS_VALUE_IS_STRING (&val)) {
-    url = SWFDEC_AS_VALUE_GET_STRING (&val);
-  } else if (SWFDEC_AS_VALUE_IS_NULL (&val)) {
+  if (SWFDEC_AS_VALUE_IS_STRING (*&val)) {
+    url = SWFDEC_AS_VALUE_GET_STRING (*&val);
+  } else if (SWFDEC_AS_VALUE_IS_NULL (*&val)) {
     url = NULL;
   } else {
     SWFDEC_FIXME ("untested argument to NetConnection.connect: type %u",
diff --git a/swfdec/swfdec_net_stream.c b/swfdec/swfdec_net_stream.c
index 16ba238..2cc2e73 100644
--- a/swfdec/swfdec_net_stream.c
+++ b/swfdec/swfdec_net_stream.c
@@ -66,8 +66,8 @@ swfdec_net_stream_onstatus (SwfdecNetStream *stream, const char *code, const cha
 
       swfdec_as_object_get_variable (cx->global,
           SWFDEC_AS_STR_System, &system);
-      if (SWFDEC_AS_VALUE_IS_COMPOSITE (&system) &&
-	  (object = SWFDEC_AS_VALUE_GET_COMPOSITE (&system)) != NULL) {
+      if (SWFDEC_AS_VALUE_IS_COMPOSITE (*&system) &&
+	  (object = SWFDEC_AS_VALUE_GET_COMPOSITE (*&system)) != NULL) {
         swfdec_as_object_call (object, SWFDEC_AS_STR_onStatus, 1, &val, NULL);
       }
     }
@@ -279,7 +279,7 @@ swfdec_net_stream_video_goto (SwfdecNetStream *stream, guint timestamp)
 	SWFDEC_ERROR ("could not parse data tag");
       } else {
 	swfdec_as_relay_call (SWFDEC_AS_RELAY (stream), 
-	    SWFDEC_AS_VALUE_GET_STRING (&name), 1, &value, NULL);
+	    SWFDEC_AS_VALUE_GET_STRING (*&name), 1, &value, NULL);
       }
       swfdec_sandbox_unuse (stream->sandbox);
     }
diff --git a/swfdec/swfdec_net_stream_as.c b/swfdec/swfdec_net_stream_as.c
index 3bcf974..a4dec3a 100644
--- a/swfdec/swfdec_net_stream_as.c
+++ b/swfdec/swfdec_net_stream_as.c
@@ -295,8 +295,8 @@ swfdec_net_stream_construct (SwfdecAsContext *cx, SwfdecAsObject *obj, guint arg
 
   swfdec_net_stream_setup (cx, obj, 0, NULL, rval);
   if (argc == 0 ||
-      !SWFDEC_AS_VALUE_IS_OBJECT (&argv[0]) || 
-      !SWFDEC_IS_NET_CONNECTION ((conn = (SwfdecNetConnection *) SWFDEC_AS_VALUE_GET_OBJECT (&argv[0])))) {
+      !SWFDEC_AS_VALUE_IS_OBJECT (*&argv[0]) || 
+      !SWFDEC_IS_NET_CONNECTION ((conn = (SwfdecNetConnection *) SWFDEC_AS_VALUE_GET_OBJECT (*&argv[0])))) {
     SWFDEC_WARNING ("no connection passed to NetStream ()");
     return;
   }
@@ -326,8 +326,8 @@ swfdec_net_stream_init_context (SwfdecPlayer *player)
   swfdec_as_object_set_variable_and_flags (proto, SWFDEC_AS_STR_constructor,
       &val, SWFDEC_AS_VARIABLE_HIDDEN | SWFDEC_AS_VARIABLE_PERMANENT);
   swfdec_as_object_get_variable (context->global, SWFDEC_AS_STR_Object, &val);
-  if (SWFDEC_AS_VALUE_IS_OBJECT (&val)) {
-    swfdec_as_object_get_variable (SWFDEC_AS_VALUE_GET_OBJECT (&val),
+  if (SWFDEC_AS_VALUE_IS_OBJECT (*&val)) {
+    swfdec_as_object_get_variable (SWFDEC_AS_VALUE_GET_OBJECT (*&val),
 	SWFDEC_AS_STR_prototype, &val);
     swfdec_as_object_set_variable_and_flags (proto, SWFDEC_AS_STR___proto__, &val,
 	SWFDEC_AS_VARIABLE_HIDDEN | SWFDEC_AS_VARIABLE_PERMANENT);
diff --git a/swfdec/swfdec_player.c b/swfdec/swfdec_player.c
index 9d5fbe5..915acf9 100644
--- a/swfdec/swfdec_player.c
+++ b/swfdec/swfdec_player.c
@@ -1139,9 +1139,9 @@ swfdec_player_broadcast (SwfdecPlayer *player, const char *object_name,
     SwfdecSandbox *sandbox = walk->data;
     swfdec_sandbox_use (sandbox);
     swfdec_as_object_get_variable (SWFDEC_AS_CONTEXT (player)->global, object_name, &vals[0]);
-    if (!SWFDEC_AS_VALUE_IS_COMPOSITE (&vals[0]))
+    if (!SWFDEC_AS_VALUE_IS_COMPOSITE (*&vals[0]))
       return;
-    obj = SWFDEC_AS_VALUE_GET_COMPOSITE (&vals[0]);
+    obj = SWFDEC_AS_VALUE_GET_COMPOSITE (*&vals[0]);
     if (obj == NULL)
       return;
     SWFDEC_AS_VALUE_SET_STRING (&vals[0], signal_name);
@@ -1514,7 +1514,7 @@ swfdec_player_get_tab_movies (SwfdecPlayer *player, const GList *current)
 	/* Flash queries again - why not? :/ */
 	swfdec_as_object_get_variable (object, SWFDEC_AS_STR_tabEnabled, &val);
 	ret = g_list_prepend (ret, actor);
-      } else if (SWFDEC_AS_VALUE_IS_UNDEFINED (&val) && 
+      } else if (SWFDEC_AS_VALUE_IS_UNDEFINED (*&val) && 
 	  swfdec_actor_get_mouse_events (actor)) {
 	ret = g_list_prepend (ret, actor);
       }
@@ -1525,7 +1525,7 @@ swfdec_player_get_tab_movies (SwfdecPlayer *player, const GList *current)
     else
       swfdec_as_object_get_variable (object, SWFDEC_AS_STR_tabChildren, &val);
 
-    if (SWFDEC_AS_VALUE_IS_UNDEFINED (&val) ||
+    if (SWFDEC_AS_VALUE_IS_UNDEFINED (*&val) ||
 	swfdec_as_value_to_boolean (SWFDEC_AS_CONTEXT (player), &val)) {
       GList *list;
       swfdec_sandbox_unuse (SWFDEC_MOVIE (actor)->resource->sandbox);
diff --git a/swfdec/swfdec_player_as.c b/swfdec/swfdec_player_as.c
index 8610c68..24bf233 100644
--- a/swfdec/swfdec_player_as.c
+++ b/swfdec/swfdec_player_as.c
@@ -51,8 +51,8 @@ swfdec_player_do_set_interval (gboolean repeat, SwfdecAsContext *cx, guint argc,
     return;
   }
 
-  if (!SWFDEC_AS_VALUE_IS_COMPOSITE (&argv[0]) ||
-      (object = SWFDEC_AS_VALUE_GET_COMPOSITE (&argv[0])) == NULL) {
+  if (!SWFDEC_AS_VALUE_IS_COMPOSITE (*&argv[0]) ||
+      (object = SWFDEC_AS_VALUE_GET_COMPOSITE (*&argv[0])) == NULL) {
     SWFDEC_WARNING ("first argument to setInterval is not an object");
     return;
   }
@@ -331,13 +331,13 @@ swfdec_player_object_registerClass (SwfdecAsContext *cx, SwfdecAsObject *object,
 
   SWFDEC_AS_CHECK (0, NULL, "s", &name);
 
-  if (argc < 2 || !SWFDEC_AS_VALUE_IS_OBJECT (&argv[1])) {
+  if (argc < 2 || !SWFDEC_AS_VALUE_IS_OBJECT (*&argv[1])) {
     SWFDEC_AS_VALUE_SET_BOOLEAN (rval, FALSE);
     return;
   }
   
   swfdec_player_set_export_class (SWFDEC_PLAYER (cx), name, 
-      SWFDEC_AS_VALUE_GET_OBJECT (&argv[1]));
+      SWFDEC_AS_VALUE_GET_OBJECT (*&argv[1]));
   SWFDEC_AS_VALUE_SET_BOOLEAN (rval, TRUE);
 }
 
diff --git a/swfdec/swfdec_print_job.c b/swfdec/swfdec_print_job.c
index 1428a6a..58de384 100644
--- a/swfdec/swfdec_print_job.c
+++ b/swfdec/swfdec_print_job.c
@@ -98,14 +98,14 @@ swfdec_print_job_init_properties (SwfdecAsContext *cx)
   g_return_if_fail (SWFDEC_IS_AS_CONTEXT (cx));
 
   swfdec_as_object_get_variable (cx->global, SWFDEC_AS_STR_PrintJob, &val);
-  if (!SWFDEC_AS_VALUE_IS_OBJECT (&val))
+  if (!SWFDEC_AS_VALUE_IS_OBJECT (*&val))
     return;
-  xml = SWFDEC_AS_VALUE_GET_OBJECT (&val);
+  xml = SWFDEC_AS_VALUE_GET_OBJECT (*&val);
 
   swfdec_as_object_get_variable (xml, SWFDEC_AS_STR_prototype, &val);
-  if (!SWFDEC_AS_VALUE_IS_OBJECT (&val))
+  if (!SWFDEC_AS_VALUE_IS_OBJECT (*&val))
     return;
-  proto = SWFDEC_AS_VALUE_GET_OBJECT (&val);
+  proto = SWFDEC_AS_VALUE_GET_OBJECT (*&val);
 
   swfdec_as_object_add_native_variable (proto, SWFDEC_AS_STR_orientation,
       swfdec_print_job_get_orientation, NULL);
diff --git a/swfdec/swfdec_resource.c b/swfdec/swfdec_resource.c
index c271ca5..387cfab 100644
--- a/swfdec/swfdec_resource.c
+++ b/swfdec/swfdec_resource.c
@@ -70,7 +70,7 @@ static void
 swfdec_resource_stream_target_image (SwfdecResource *instance)
 {
   SwfdecPlayer *player = SWFDEC_PLAYER (swfdec_gc_object_get_context (instance));
-  SwfdecSpriteMovie *movie = (SwfdecSpriteMovie *) SWFDEC_AS_VALUE_GET_MOVIE (&instance->movie);
+  SwfdecSpriteMovie *movie = (SwfdecSpriteMovie *) SWFDEC_AS_VALUE_GET_MOVIE (*&instance->movie);
 
   if (!SWFDEC_IS_SPRITE_MOVIE (movie) || movie->sprite != NULL)
     return;
@@ -124,8 +124,8 @@ swfdec_resource_emit_signal (SwfdecResource *resource, const char *name, gboolea
   cx = swfdec_gc_object_get_context (resource->clip_loader);
 
   SWFDEC_AS_VALUE_SET_STRING (&vals[0], name);
-  if (SWFDEC_AS_VALUE_IS_MOVIE (&resource->movie)) {
-    movie = SWFDEC_AS_VALUE_GET_MOVIE (&resource->movie);
+  if (SWFDEC_AS_VALUE_IS_MOVIE (*&resource->movie)) {
+    movie = SWFDEC_AS_VALUE_GET_MOVIE (*&resource->movie);
     if (movie == NULL) {
       SWFDEC_DEBUG ("no movie, not emitting signal");
       return;
@@ -212,8 +212,8 @@ swfdec_resource_stream_target_open (SwfdecStreamTarget *target, SwfdecStream *st
   SwfdecMovie *movie;
   const char *query;
 
-  g_assert (SWFDEC_AS_VALUE_IS_MOVIE (&instance->movie));
-  movie = SWFDEC_AS_VALUE_GET_MOVIE (&instance->movie);
+  g_assert (SWFDEC_AS_VALUE_IS_MOVIE (*&instance->movie));
+  movie = SWFDEC_AS_VALUE_GET_MOVIE (*&instance->movie);
   g_assert (movie);
   object = swfdec_as_relay_get_as_object (SWFDEC_AS_RELAY (movie));
   query = swfdec_url_get_query (swfdec_loader_get_url (loader));
@@ -333,8 +333,8 @@ swfdec_resource_stream_target_close (SwfdecStreamTarget *target, SwfdecStream *s
   if (swfdec_resource_abort_if_not_initialized (resource))
     return;
 
-  if (SWFDEC_AS_VALUE_IS_MOVIE (&resource->movie)) {
-    SwfdecMovie *movie = SWFDEC_AS_VALUE_GET_MOVIE (&resource->movie);
+  if (SWFDEC_AS_VALUE_IS_MOVIE (*&resource->movie)) {
+    SwfdecMovie *movie = SWFDEC_AS_VALUE_GET_MOVIE (*&resource->movie);
     if (movie)
       swfdec_actor_queue_script (SWFDEC_ACTOR (movie), SWFDEC_EVENT_LOAD);
   }
@@ -532,17 +532,17 @@ swfdec_resource_create_movie (SwfdecResource *resource, SwfdecResourceLoad *load
   SwfdecPlayer *player;
   SwfdecSpriteMovie *movie;
 
-  if (SWFDEC_AS_VALUE_IS_MOVIE (&resource->movie))
+  if (SWFDEC_AS_VALUE_IS_MOVIE (*&resource->movie))
     return TRUE;
   player = SWFDEC_PLAYER (swfdec_gc_object_get_context (resource));
-  if (SWFDEC_AS_VALUE_IS_MOVIE (&load->target)) {
-    movie = (SwfdecSpriteMovie *) SWFDEC_AS_VALUE_GET_MOVIE (&load->target);
+  if (SWFDEC_AS_VALUE_IS_MOVIE (*&load->target)) {
+    movie = (SwfdecSpriteMovie *) SWFDEC_AS_VALUE_GET_MOVIE (*&load->target);
     if (SWFDEC_IS_SPRITE_MOVIE (movie))
       movie = swfdec_resource_replace_movie (movie, resource);
     else
       movie = NULL;
-  } else if (SWFDEC_AS_VALUE_IS_STRING (&load->target)) {
-    int level = swfdec_player_get_level (player, SWFDEC_AS_VALUE_GET_STRING (&load->target), 7);
+  } else if (SWFDEC_AS_VALUE_IS_STRING (*&load->target)) {
+    int level = swfdec_player_get_level (player, SWFDEC_AS_VALUE_GET_STRING (*&load->target), 7);
     if (level >= 0) {
       movie = swfdec_player_get_movie_at_level (player, level);
       if (movie)
@@ -582,9 +582,9 @@ swfdec_resource_do_load (SwfdecPlayer *player, gboolean allowed, gpointer loadp)
     SWFDEC_WARNING ("SECURITY: no access to %s from %s",
 	load->url, swfdec_url_get_url (load->sandbox->url));
     /* FIXME: is replacing correct? */
-    if (SWFDEC_AS_VALUE_IS_MOVIE (&load->target)) {
-      if (SWFDEC_AS_VALUE_IS_MOVIE (&load->target) &&
-	  SWFDEC_IS_SPRITE_MOVIE (SWFDEC_AS_VALUE_GET_MOVIE (&load->target)))
+    if (SWFDEC_AS_VALUE_IS_MOVIE (*&load->target)) {
+      if (SWFDEC_AS_VALUE_IS_MOVIE (*&load->target) &&
+	  SWFDEC_IS_SPRITE_MOVIE (SWFDEC_AS_VALUE_GET_MOVIE (*&load->target)))
 	resource->movie = load->target;
       swfdec_resource_emit_error (resource, SWFDEC_AS_STR_IllegalRequest);
     }
@@ -619,8 +619,8 @@ swfdec_resource_load_request (gpointer loadp, gpointer playerp)
   if (load->url[0] == '\0') {
     SwfdecSpriteMovie *movie;
       
-    if (SWFDEC_AS_VALUE_IS_MOVIE (&load->target)) {
-      movie = (SwfdecSpriteMovie *) SWFDEC_AS_VALUE_GET_MOVIE (&load->target);
+    if (SWFDEC_AS_VALUE_IS_MOVIE (*&load->target)) {
+      movie = (SwfdecSpriteMovie *) SWFDEC_AS_VALUE_GET_MOVIE (*&load->target);
     } else {
       movie = NULL;
     }
@@ -637,7 +637,7 @@ swfdec_resource_load_request (gpointer loadp, gpointer playerp)
   if (g_ascii_strncasecmp (load->url, "FSCommand:", 10) == 0) {
     char *command = load->url + 10;
     const char *target = swfdec_as_value_to_string (SWFDEC_AS_CONTEXT (player), load->target);
-    if (SWFDEC_AS_VALUE_IS_MOVIE (&load->target)) {
+    if (SWFDEC_AS_VALUE_IS_MOVIE (*&load->target)) {
       SWFDEC_FIXME ("Adobe 9.0.124.0 and later don't emit fscommands here. "
 	  "We just do for compatibility reasons with the testsuite.");
     }
@@ -647,9 +647,9 @@ swfdec_resource_load_request (gpointer loadp, gpointer playerp)
   }
 
   /* LAUNCH command (aka getURL) */
-  if (SWFDEC_AS_VALUE_IS_STRING (&load->target) && swfdec_player_get_level (player, 
-	SWFDEC_AS_VALUE_GET_STRING (&load->target), 7) < 0) {
-    swfdec_player_launch (player, load->url, SWFDEC_AS_VALUE_GET_STRING (&load->target), load->buffer);
+  if (SWFDEC_AS_VALUE_IS_STRING (*&load->target) && swfdec_player_get_level (player, 
+	SWFDEC_AS_VALUE_GET_STRING (*&load->target), 7) < 0) {
+    swfdec_player_launch (player, load->url, SWFDEC_AS_VALUE_GET_STRING (*&load->target), load->buffer);
     swfdec_player_unroot (player, load);
     return;
   }
@@ -692,8 +692,8 @@ swfdec_resource_load_movie (SwfdecPlayer *player, const SwfdecAsValue *target,
   g_return_val_if_fail (url != NULL, FALSE);
   g_return_val_if_fail (loader == NULL || SWFDEC_IS_MOVIE_CLIP_LOADER (loader), FALSE);
 
-  if (SWFDEC_AS_VALUE_IS_MOVIE (target)) {
-    movie = SWFDEC_AS_VALUE_GET_MOVIE (target);
+  if (SWFDEC_AS_VALUE_IS_MOVIE (*target)) {
+    movie = SWFDEC_AS_VALUE_GET_MOVIE (*target);
     if (SWFDEC_IS_SPRITE_MOVIE (movie)) {
       swfdec_resource_load_internal (player, target, url, buffer, loader);
       return TRUE;
@@ -701,15 +701,15 @@ swfdec_resource_load_movie (SwfdecPlayer *player, const SwfdecAsValue *target,
   }
 
   if (loader) {
-    if (SWFDEC_AS_VALUE_IS_NUMBER (target)) {
-      int i = swfdec_as_double_to_integer (SWFDEC_AS_VALUE_GET_NUMBER (target));
+    if (SWFDEC_AS_VALUE_IS_NUMBER (*target)) {
+      int i = swfdec_as_double_to_integer (SWFDEC_AS_VALUE_GET_NUMBER (*target));
       if (i < 0)
 	return FALSE;
       SWFDEC_AS_VALUE_SET_STRING (&val, swfdec_as_context_give_string (
 	    SWFDEC_AS_CONTEXT (player), g_strdup_printf ("_level%d", i)));
       swfdec_resource_load_internal (player, &val, url, buffer, loader);
       return TRUE;
-    } else if (SWFDEC_AS_VALUE_IS_STRING (target) || SWFDEC_AS_VALUE_IS_MOVIE(target)) {
+    } else if (SWFDEC_AS_VALUE_IS_STRING (*target) || SWFDEC_AS_VALUE_IS_MOVIE (*target)) {
       s = swfdec_as_value_to_string (SWFDEC_AS_CONTEXT (player), *target);
     } else {
       SWFDEC_WARNING ("target does not reference a movie, not loading %s", url);
@@ -758,9 +758,9 @@ swfdec_resource_emit_on_load_init (SwfdecResource *resource)
   if (resource->state != SWFDEC_RESOURCE_COMPLETE)
     return FALSE;
 
-  if (SWFDEC_AS_VALUE_IS_MOVIE (&resource->movie) && SWFDEC_IS_IMAGE_DECODER (resource->decoder)) {
+  if (SWFDEC_AS_VALUE_IS_MOVIE (*&resource->movie) && SWFDEC_IS_IMAGE_DECODER (resource->decoder)) {
     SwfdecImage *image = SWFDEC_IMAGE_DECODER (resource->decoder)->image;
-    SwfdecMovie *movie = SWFDEC_AS_VALUE_GET_MOVIE (&resource->movie);
+    SwfdecMovie *movie = SWFDEC_AS_VALUE_GET_MOVIE (*&resource->movie);
     if (image && movie) {
       swfdec_movie_invalidate_next (movie);
       swfdec_movie_queue_update (movie, SWFDEC_MOVIE_INVALID_EXTENTS);
diff --git a/swfdec/swfdec_sound_object.c b/swfdec/swfdec_sound_object.c
index ef539ef..8dce9f0 100644
--- a/swfdec/swfdec_sound_object.c
+++ b/swfdec/swfdec_sound_object.c
@@ -451,7 +451,7 @@ swfdec_sound_object_construct (SwfdecAsContext *cx, SwfdecAsObject *object, guin
   sound = g_object_new (SWFDEC_TYPE_SOUND_OBJECT, "context", cx, NULL);
   swfdec_as_object_set_relay (object, SWFDEC_AS_RELAY (sound));
 
-  if (argc == 0 || SWFDEC_AS_VALUE_IS_UNDEFINED (&argv[0])) {
+  if (argc == 0 || SWFDEC_AS_VALUE_IS_UNDEFINED (*&argv[0])) {
     sound->target = NULL;
   } else {
     sound->target = swfdec_as_value_to_string (cx, argv[0]);
diff --git a/swfdec/swfdec_sprite_movie_as.c b/swfdec/swfdec_sprite_movie_as.c
index 3cda6d0..e6d30a8 100644
--- a/swfdec/swfdec_sprite_movie_as.c
+++ b/swfdec/swfdec_sprite_movie_as.c
@@ -163,10 +163,10 @@ swfdec_sprite_movie_set_filters (SwfdecAsContext *cx, SwfdecAsObject *object,
   for (i = 0; i < length; i++) {
     if (!swfdec_as_object_get_variable (array, 
 	  swfdec_as_integer_to_string (cx, i), &val) ||
-	!SWFDEC_AS_VALUE_IS_OBJECT (&val) ||
-	!SWFDEC_IS_FILTER (SWFDEC_AS_VALUE_GET_OBJECT (&val)->relay))
+	!SWFDEC_AS_VALUE_IS_OBJECT (*&val) ||
+	!SWFDEC_IS_FILTER (SWFDEC_AS_VALUE_GET_OBJECT (*&val)->relay))
       continue;
-    filter = SWFDEC_FILTER (SWFDEC_AS_VALUE_GET_OBJECT (&val)->relay);
+    filter = SWFDEC_FILTER (SWFDEC_AS_VALUE_GET_OBJECT (*&val)->relay);
     filter = swfdec_filter_clone (filter);
     list = g_slist_prepend (list, filter);
   }
@@ -241,18 +241,18 @@ swfdec_sprite_movie_set_blendMode (SwfdecAsContext *cx, SwfdecAsObject *object,
 
   SWFDEC_AS_CHECK (SWFDEC_TYPE_MOVIE, &movie, "v", &val);
 
-  if (SWFDEC_AS_VALUE_IS_NUMBER (&val)) {
-    blend_mode = SWFDEC_AS_VALUE_GET_NUMBER (&val);
-  } else if (SWFDEC_AS_VALUE_IS_STRING (&val)) {
+  if (SWFDEC_AS_VALUE_IS_NUMBER (*&val)) {
+    blend_mode = SWFDEC_AS_VALUE_GET_NUMBER (*&val);
+  } else if (SWFDEC_AS_VALUE_IS_STRING (*&val)) {
     blend_mode = 0;
-    str = SWFDEC_AS_VALUE_GET_STRING (&val);
+    str = SWFDEC_AS_VALUE_GET_STRING (*&val);
     for (i = 0; i < num_blend_mode_names; i++) {
       if (str == blend_mode_names[i]) { // case-sensitive
 	blend_mode = i + 1;
 	break;
       }
     }
-  } else if (SWFDEC_AS_VALUE_IS_OBJECT (&val)) {
+  } else if (SWFDEC_AS_VALUE_IS_OBJECT (*&val)) {
     blend_mode = 0;
   } else {
     blend_mode = 1;
@@ -277,14 +277,14 @@ swfdec_sprite_movie_localToGlobal (SwfdecAsContext *cx, SwfdecAsObject *object,
   SWFDEC_AS_CHECK (SWFDEC_TYPE_MOVIE, &movie, "O", &o);
 
   xv = swfdec_as_object_peek_variable (o, SWFDEC_AS_STR_x);
-  if (xv == NULL || !SWFDEC_AS_VALUE_IS_NUMBER (xv))
+  if (xv == NULL || !SWFDEC_AS_VALUE_IS_NUMBER (*xv))
     return;
   yv = swfdec_as_object_peek_variable (o, SWFDEC_AS_STR_y);
-  if (yv == NULL || !SWFDEC_AS_VALUE_IS_NUMBER (yv))
+  if (yv == NULL || !SWFDEC_AS_VALUE_IS_NUMBER (*yv))
     return;
 
-  x = SWFDEC_AS_VALUE_GET_NUMBER (xv);
-  y = SWFDEC_AS_VALUE_GET_NUMBER (yv);
+  x = SWFDEC_AS_VALUE_GET_NUMBER (*xv);
+  y = SWFDEC_AS_VALUE_GET_NUMBER (*yv);
   x = swfdec_as_double_to_integer (x * SWFDEC_TWIPS_SCALE_FACTOR);
   y = swfdec_as_double_to_integer (y * SWFDEC_TWIPS_SCALE_FACTOR);
   swfdec_movie_local_to_global (movie, &x, &y);
@@ -305,14 +305,14 @@ swfdec_sprite_movie_globalToLocal (SwfdecAsContext *cx, SwfdecAsObject *object,
   SWFDEC_AS_CHECK (SWFDEC_TYPE_MOVIE, &movie, "O", &o);
 
   xv = swfdec_as_object_peek_variable (o, SWFDEC_AS_STR_x);
-  if (xv == NULL || !SWFDEC_AS_VALUE_IS_NUMBER (xv))
+  if (xv == NULL || !SWFDEC_AS_VALUE_IS_NUMBER (*xv))
     return;
   yv = swfdec_as_object_peek_variable (o, SWFDEC_AS_STR_y);
-  if (yv == NULL || !SWFDEC_AS_VALUE_IS_NUMBER (yv))
+  if (yv == NULL || !SWFDEC_AS_VALUE_IS_NUMBER (*yv))
     return;
 
-  x = SWFDEC_AS_VALUE_GET_NUMBER (xv);
-  y = SWFDEC_AS_VALUE_GET_NUMBER (yv);
+  x = SWFDEC_AS_VALUE_GET_NUMBER (*xv);
+  y = SWFDEC_AS_VALUE_GET_NUMBER (*yv);
   x = swfdec_as_double_to_integer (x * SWFDEC_TWIPS_SCALE_FACTOR);
   y = swfdec_as_double_to_integer (y * SWFDEC_TWIPS_SCALE_FACTOR);
   swfdec_movie_global_to_local (movie, &x, &y);
@@ -348,7 +348,7 @@ swfdec_sprite_movie_getInstanceAtDepth (SwfdecAsContext *cx,
   SWFDEC_AS_CHECK (SWFDEC_TYPE_MOVIE, &movie, "i", &depth);
 
   // special case
-  if (SWFDEC_AS_VALUE_IS_UNDEFINED (&argv[0]))
+  if (SWFDEC_AS_VALUE_IS_UNDEFINED (*&argv[0]))
     return;
 
   movie = swfdec_movie_find (movie, depth);
@@ -501,8 +501,8 @@ swfdec_sprite_movie_do_goto (SwfdecSpriteMovie *movie, SwfdecAsValue *target)
   g_return_if_fail (SWFDEC_IS_SPRITE_MOVIE (movie));
   g_return_if_fail (movie->sprite != NULL);
 
-  if (SWFDEC_AS_VALUE_IS_STRING (target)) {
-    const char *label = SWFDEC_AS_VALUE_GET_STRING (target);
+  if (SWFDEC_AS_VALUE_IS_STRING (*target)) {
+    const char *label = SWFDEC_AS_VALUE_GET_STRING (*target);
     frame = swfdec_sprite_get_frame (movie->sprite, label);
     /* FIXME: nonexisting frames? */
     if (frame == -1)
@@ -676,8 +676,8 @@ swfdec_sprite_movie_swapDepths (SwfdecAsContext *cx, SwfdecAsObject *object,
   if (movie->parent == NULL)
     SWFDEC_FIXME ("swapDepths on root movie, should do something weird");
 
-  if (SWFDEC_AS_VALUE_IS_MOVIE (&value)) {
-    other = SWFDEC_AS_VALUE_GET_MOVIE (&value);
+  if (SWFDEC_AS_VALUE_IS_MOVIE (*&value)) {
+    other = SWFDEC_AS_VALUE_GET_MOVIE (*&value);
     if (other == NULL || other->parent != movie->parent)
       return;
     depth = other->depth;
@@ -944,7 +944,7 @@ swfdec_sprite_movie_setMask (SwfdecAsContext *cx, SwfdecAsObject *object,
   /* yes, this works with regular movies */
   SWFDEC_AS_CHECK (SWFDEC_TYPE_MOVIE, &movie, "M", &mask);
 
-  if (argc > 0 && mask == NULL && !SWFDEC_AS_VALUE_IS_NULL (&argv[0])) {
+  if (argc > 0 && mask == NULL && !SWFDEC_AS_VALUE_IS_NULL (*&argv[0])) {
     SWFDEC_FIXME ("mask is not a movie and not null, what now?");
     mask = NULL;
   }
diff --git a/swfdec/swfdec_style_sheet.c b/swfdec/swfdec_style_sheet.c
index 4df1967..65e5531 100644
--- a/swfdec/swfdec_style_sheet.c
+++ b/swfdec/swfdec_style_sheet.c
@@ -334,12 +334,12 @@ swfdec_style_sheet_get_format (SwfdecStyleSheet *style, const char *name)
   swfdec_as_object_get_variable (swfdec_as_relay_get_as_object (SWFDEC_AS_RELAY (style)),
       SWFDEC_AS_STR__styles, &val);
   swfdec_as_value_get_variable (swfdec_gc_object_get_context (style), &val, name, &val);
-  if (!SWFDEC_AS_VALUE_IS_OBJECT (&val))
+  if (!SWFDEC_AS_VALUE_IS_OBJECT (*&val))
     return NULL;
-  if (!SWFDEC_IS_TEXT_FORMAT (SWFDEC_AS_VALUE_GET_OBJECT (&val)->relay))
+  if (!SWFDEC_IS_TEXT_FORMAT (SWFDEC_AS_VALUE_GET_OBJECT (*&val)->relay))
     return NULL;
 
-  return SWFDEC_TEXT_FORMAT (SWFDEC_AS_VALUE_GET_OBJECT (&val)->relay);
+  return SWFDEC_TEXT_FORMAT (SWFDEC_AS_VALUE_GET_OBJECT (*&val)->relay);
 }
 
 SwfdecTextFormat *
diff --git a/swfdec/swfdec_system_as.c b/swfdec/swfdec_system_as.c
index 81b6e4f..139f161 100644
--- a/swfdec/swfdec_system_as.c
+++ b/swfdec/swfdec_system_as.c
@@ -306,11 +306,11 @@ swfdec_system_query (SwfdecAsContext *cx, SwfdecAsObject *object,
     queries[i].get (player, &val);
     swfdec_as_object_set_variable (object, queries[i].name, &val);
     if (queries[i].name == SWFDEC_AS_STR_screenResolutionY) {
-      g_string_append_printf (server, "x%d", (int) SWFDEC_AS_VALUE_GET_NUMBER (&val));
+      g_string_append_printf (server, "x%d", (int) SWFDEC_AS_VALUE_GET_NUMBER (*&val));
     } else if (queries[i].name == SWFDEC_AS_STR_pixelAspectRatio) {
       char buffer[10];
       g_ascii_formatd (buffer, sizeof (buffer), "%.1f",
-	  SWFDEC_AS_VALUE_GET_NUMBER (&val));
+	  SWFDEC_AS_VALUE_GET_NUMBER (*&val));
       g_string_append (server, "&AR=");
       g_string_append (server, buffer);
     } else if (queries[i].name == SWFDEC_AS_STR_manufacturer) {
@@ -323,12 +323,12 @@ swfdec_system_query (SwfdecAsContext *cx, SwfdecAsObject *object,
 	g_string_append_c (server, '&');
       g_string_append (server, queries[i].server_string);
       g_string_append_c (server, '=');
-      if (SWFDEC_AS_VALUE_IS_BOOLEAN (&val)) {
-	g_string_append_c (server, SWFDEC_AS_VALUE_GET_BOOLEAN (&val) ? 't' : 'f');
-      } else if (SWFDEC_AS_VALUE_IS_NUMBER (&val)) {
-	g_string_append_printf (server, "%d", (int) SWFDEC_AS_VALUE_GET_NUMBER (&val));
-      } else if (SWFDEC_AS_VALUE_IS_STRING (&val)) {
-	char *s = swfdec_as_string_escape (cx, SWFDEC_AS_VALUE_GET_STRING (&val));
+      if (SWFDEC_AS_VALUE_IS_BOOLEAN (*&val)) {
+	g_string_append_c (server, SWFDEC_AS_VALUE_GET_BOOLEAN (*&val) ? 't' : 'f');
+      } else if (SWFDEC_AS_VALUE_IS_NUMBER (*&val)) {
+	g_string_append_printf (server, "%d", (int) SWFDEC_AS_VALUE_GET_NUMBER (*&val));
+      } else if (SWFDEC_AS_VALUE_IS_STRING (*&val)) {
+	char *s = swfdec_as_string_escape (cx, SWFDEC_AS_VALUE_GET_STRING (*&val));
 	g_string_append (server, s);
 	g_free (s);
       } else {
diff --git a/swfdec/swfdec_text_field_movie_as.c b/swfdec/swfdec_text_field_movie_as.c
index f4c7a71..196d8c4 100644
--- a/swfdec/swfdec_text_field_movie_as.c
+++ b/swfdec/swfdec_text_field_movie_as.c
@@ -306,8 +306,8 @@ swfdec_text_field_movie_set_restrict (SwfdecAsContext *cx,
   if (text->restrict_ == NULL && value == SWFDEC_AS_STR_EMPTY)
     return;
 
-  if (SWFDEC_AS_VALUE_IS_UNDEFINED (&argv[0]) ||
-      SWFDEC_AS_VALUE_IS_NULL (&argv[0])) {
+  if (SWFDEC_AS_VALUE_IS_UNDEFINED (*&argv[0]) ||
+      SWFDEC_AS_VALUE_IS_NULL (*&argv[0])) {
     text->restrict_ = NULL;
   } else {
     text->restrict_ = value;
@@ -411,8 +411,8 @@ swfdec_text_field_movie_do_set_variable (SwfdecAsContext *cx,
 
   SWFDEC_AS_CHECK (SWFDEC_TYPE_TEXT_FIELD_MOVIE, &text, "s", &value);
 
-  if (SWFDEC_AS_VALUE_IS_UNDEFINED (&argv[0]) ||
-      SWFDEC_AS_VALUE_IS_NULL (&argv[0]) || value == SWFDEC_AS_STR_EMPTY) {
+  if (SWFDEC_AS_VALUE_IS_UNDEFINED (*&argv[0]) ||
+      SWFDEC_AS_VALUE_IS_NULL (*&argv[0]) || value == SWFDEC_AS_STR_EMPTY) {
     value = NULL;
   }
 
@@ -752,8 +752,8 @@ swfdec_text_field_movie_set_autoSize (SwfdecAsContext *cx,
   if (argc < 1)
     return;
 
-  if (SWFDEC_AS_VALUE_IS_BOOLEAN (&argv[0])) {
-    if (SWFDEC_AS_VALUE_GET_BOOLEAN (&argv[0])) {
+  if (SWFDEC_AS_VALUE_IS_BOOLEAN (*&argv[0])) {
+    if (SWFDEC_AS_VALUE_GET_BOOLEAN (*&argv[0])) {
       text->auto_size = SWFDEC_AUTO_SIZE_LEFT;
     } else {
       text->auto_size = SWFDEC_AUTO_SIZE_NONE;
@@ -903,8 +903,8 @@ swfdec_text_field_movie_set_styleSheet (SwfdecAsContext *cx,
 
   swfdec_as_value_to_number (cx, &argv[0]);
 
-  if (SWFDEC_AS_VALUE_IS_OBJECT (&argv[0])) {
-    value = SWFDEC_AS_VALUE_GET_OBJECT (&argv[0]);
+  if (SWFDEC_AS_VALUE_IS_OBJECT (*&argv[0])) {
+    value = SWFDEC_AS_VALUE_GET_OBJECT (*&argv[0]);
   } else {
     value = NULL;
   }
@@ -1138,12 +1138,12 @@ swfdec_text_field_movie_setTextFormat (SwfdecAsContext *cx,
   if (start == end)
     return;
 
-  if (!SWFDEC_AS_VALUE_IS_OBJECT (&argv[i]))
+  if (!SWFDEC_AS_VALUE_IS_OBJECT (*&argv[i]))
     return;
-  if (!SWFDEC_IS_TEXT_FORMAT (SWFDEC_AS_VALUE_GET_OBJECT (&argv[i])->relay))
+  if (!SWFDEC_IS_TEXT_FORMAT (SWFDEC_AS_VALUE_GET_OBJECT (*&argv[i])->relay))
     return;
 
-  format = SWFDEC_TEXT_FORMAT (SWFDEC_AS_VALUE_GET_OBJECT (&argv[i])->relay);
+  format = SWFDEC_TEXT_FORMAT (SWFDEC_AS_VALUE_GET_OBJECT (*&argv[i])->relay);
   start = g_utf8_offset_to_pointer (string, start) - string;
   end = g_utf8_offset_to_pointer (string, end) - string;
 
@@ -1391,9 +1391,9 @@ swfdec_text_field_movie_createTextField (SwfdecAsContext *cx,
   swfdec_movie_update (movie);
 
   swfdec_as_object_get_variable (cx->global, SWFDEC_AS_STR_TextField, &val);
-  if (!SWFDEC_AS_VALUE_IS_OBJECT (&val))
+  if (!SWFDEC_AS_VALUE_IS_OBJECT (*&val))
     return;
-  fun_object = SWFDEC_AS_VALUE_GET_OBJECT (&val);
+  fun_object = SWFDEC_AS_VALUE_GET_OBJECT (*&val);
   if (!SWFDEC_IS_AS_FUNCTION (fun_object->relay))
     return;
   fun = SWFDEC_AS_FUNCTION (fun_object->relay);
@@ -1432,13 +1432,13 @@ swfdec_text_field_movie_init_properties (SwfdecAsContext *cx)
   g_return_if_fail (SWFDEC_IS_AS_CONTEXT (cx));
 
   swfdec_as_object_get_variable (cx->global, SWFDEC_AS_STR_TextField, &val);
-  if (!SWFDEC_AS_VALUE_IS_OBJECT (&val))
+  if (!SWFDEC_AS_VALUE_IS_OBJECT (*&val))
     return;
-  object = SWFDEC_AS_VALUE_GET_OBJECT (&val);
+  object = SWFDEC_AS_VALUE_GET_OBJECT (*&val);
   swfdec_as_object_get_variable (object, SWFDEC_AS_STR_prototype, &val);
-  if (!SWFDEC_AS_VALUE_IS_OBJECT (&val))
+  if (!SWFDEC_AS_VALUE_IS_OBJECT (*&val))
     return;
-  proto = SWFDEC_AS_VALUE_GET_OBJECT (&val);
+  proto = SWFDEC_AS_VALUE_GET_OBJECT (*&val);
 
   // text
   swfdec_as_object_add_native_variable (proto, SWFDEC_AS_STR_text,
diff --git a/swfdec/swfdec_text_format.c b/swfdec/swfdec_text_format.c
index b7bc75b..f9da9c2 100644
--- a/swfdec/swfdec_text_format.c
+++ b/swfdec/swfdec_text_format.c
@@ -140,8 +140,8 @@ swfdec_text_format_set_string (SwfdecAsObject *object,
   swfdec_as_value_to_number (context, &argv[0]);
   s = swfdec_as_value_to_string (context, argv[0]);
 
-  if (SWFDEC_AS_VALUE_IS_UNDEFINED (&argv[0]) ||
-      SWFDEC_AS_VALUE_IS_NULL (&argv[0])) {
+  if (SWFDEC_AS_VALUE_IS_UNDEFINED (*&argv[0]) ||
+      SWFDEC_AS_VALUE_IS_NULL (*&argv[0])) {
     /* FIXME: reset to defaults here? */
     SWFDEC_TEXT_ATTRIBUTE_UNSET (format->values_set, property);
   } else {
@@ -192,8 +192,8 @@ swfdec_text_format_set_boolean (SwfdecAsObject *object,
   swfdec_as_value_to_number (context, &argv[0]);
   swfdec_as_value_to_string (context, argv[0]);
 
-  if (SWFDEC_AS_VALUE_IS_UNDEFINED (&argv[0]) ||
-      SWFDEC_AS_VALUE_IS_NULL (&argv[0])) {
+  if (SWFDEC_AS_VALUE_IS_UNDEFINED (*&argv[0]) ||
+      SWFDEC_AS_VALUE_IS_NULL (*&argv[0])) {
     SWFDEC_TEXT_ATTRIBUTE_UNSET (format->values_set, property);
   } else {
     G_STRUCT_MEMBER (gboolean, format, property_offsets[property]) =
@@ -275,8 +275,8 @@ swfdec_text_format_set_integer (SwfdecAsObject *object,
   if (argc < 1)
     return;
 
-  if (SWFDEC_AS_VALUE_IS_UNDEFINED (&argv[0]) ||
-      SWFDEC_AS_VALUE_IS_NULL (&argv[0])) {
+  if (SWFDEC_AS_VALUE_IS_UNDEFINED (*&argv[0]) ||
+      SWFDEC_AS_VALUE_IS_NULL (*&argv[0])) {
     SWFDEC_TEXT_ATTRIBUTE_UNSET (format->values_set, property);
   } else {
     G_STRUCT_MEMBER (int, format, property_offsets[property]) =
@@ -428,8 +428,8 @@ swfdec_text_format_do_set_color (SwfdecAsContext *cx, SwfdecAsObject *object,
   if (argc < 1)
     return;
 
-  if (SWFDEC_AS_VALUE_IS_UNDEFINED (&argv[0]) ||
-      SWFDEC_AS_VALUE_IS_NULL (&argv[0])) {
+  if (SWFDEC_AS_VALUE_IS_UNDEFINED (*&argv[0]) ||
+      SWFDEC_AS_VALUE_IS_NULL (*&argv[0])) {
     SWFDEC_TEXT_ATTRIBUTE_UNSET (format->values_set, SWFDEC_TEXT_ATTRIBUTE_COLOR);
   } else {
     format->attr.color = (unsigned) swfdec_as_value_to_integer (cx, &argv[0]);
@@ -624,8 +624,8 @@ swfdec_text_format_do_set_letter_spacing (SwfdecAsContext *cx,
   d = swfdec_as_value_to_number (cx, &argv[0]);
   swfdec_as_value_to_string (cx, argv[0]);
 
-  if (SWFDEC_AS_VALUE_IS_UNDEFINED (&argv[0]) ||
-      SWFDEC_AS_VALUE_IS_NULL (&argv[0]))
+  if (SWFDEC_AS_VALUE_IS_UNDEFINED (*&argv[0]) ||
+      SWFDEC_AS_VALUE_IS_NULL (*&argv[0]))
   {
     SWFDEC_TEXT_ATTRIBUTE_UNSET (format->values_set,
 	SWFDEC_TEXT_ATTRIBUTE_LETTER_SPACING);
@@ -714,23 +714,23 @@ swfdec_text_format_do_set_tab_stops (SwfdecAsContext *cx,
   swfdec_as_value_to_number (cx, &argv[0]);
   swfdec_as_value_to_string (cx, argv[0]);
 
-  if (SWFDEC_AS_VALUE_IS_UNDEFINED (&argv[0]) ||
-      SWFDEC_AS_VALUE_IS_NULL (&argv[0]))
+  if (SWFDEC_AS_VALUE_IS_UNDEFINED (*&argv[0]) ||
+      SWFDEC_AS_VALUE_IS_NULL (*&argv[0]))
   {
     g_free (format->attr.tab_stops);
     format->attr.tab_stops = NULL;
     format->attr.n_tab_stops = 0;
     SWFDEC_TEXT_ATTRIBUTE_UNSET (format->values_set, SWFDEC_TEXT_ATTRIBUTE_TAB_STOPS);
   }
-  else if (SWFDEC_AS_VALUE_IS_OBJECT (&argv[0]) &&
-	SWFDEC_AS_VALUE_GET_OBJECT (&argv[0])->array)
+  else if (SWFDEC_AS_VALUE_IS_OBJECT (*&argv[0]) &&
+	SWFDEC_AS_VALUE_GET_OBJECT (*&argv[0])->array)
   {
     SwfdecAsObject *array;
     SwfdecAsValue val;
     guint i;
     int len;
 
-    array = SWFDEC_AS_VALUE_GET_OBJECT (&argv[0]);
+    array = SWFDEC_AS_VALUE_GET_OBJECT (*&argv[0]);
     len = swfdec_as_array_get_length (array);
 
     if (!SWFDEC_TEXT_ATTRIBUTE_IS_SET (format->values_set, SWFDEC_TEXT_ATTRIBUTE_TAB_STOPS)) {
@@ -748,12 +748,12 @@ swfdec_text_format_do_set_tab_stops (SwfdecAsContext *cx,
       format->attr.tab_stops[i] = swfdec_text_format_value_to_integer (cx, &val, TRUE);
     }
   }
-  else if (SWFDEC_AS_VALUE_IS_STRING (&argv[0]))
+  else if (SWFDEC_AS_VALUE_IS_STRING (*&argv[0]))
   {
     gsize i;
 
     // special case: empty strings mean null
-    if (SWFDEC_AS_VALUE_GET_STRING (&argv[0]) == SWFDEC_AS_STR_EMPTY) {
+    if (SWFDEC_AS_VALUE_GET_STRING (*&argv[0]) == SWFDEC_AS_STR_EMPTY) {
       g_free (format->attr.tab_stops);
       format->attr.tab_stops = NULL;
       format->attr.n_tab_stops = 0;
@@ -761,7 +761,7 @@ swfdec_text_format_do_set_tab_stops (SwfdecAsContext *cx,
     } else {
       int n = cx->version >= 8 ? G_MININT : 0;
       SWFDEC_TEXT_ATTRIBUTE_SET (format->values_set, SWFDEC_TEXT_ATTRIBUTE_TAB_STOPS);
-      format->attr.n_tab_stops = strlen (SWFDEC_AS_VALUE_GET_STRING (&argv[0]));
+      format->attr.n_tab_stops = strlen (SWFDEC_AS_VALUE_GET_STRING (*&argv[0]));
       format->attr.tab_stops = g_new (guint, format->attr.n_tab_stops);
       for (i = 0; i < format->attr.n_tab_stops; i++) {
 	format->attr.tab_stops[i] = n;
@@ -950,13 +950,13 @@ swfdec_text_format_init_properties (SwfdecAsContext *cx)
   g_return_if_fail (SWFDEC_IS_AS_CONTEXT (cx));
 
   swfdec_as_object_get_variable (cx->global, SWFDEC_AS_STR_TextFormat, &val);
-  if (!SWFDEC_AS_VALUE_IS_OBJECT (&val))
+  if (!SWFDEC_AS_VALUE_IS_OBJECT (*&val))
     return;
-  proto = SWFDEC_AS_VALUE_GET_OBJECT (&val);
+  proto = SWFDEC_AS_VALUE_GET_OBJECT (*&val);
   swfdec_as_object_get_variable (proto, SWFDEC_AS_STR_prototype, &val);
-  if (!SWFDEC_AS_VALUE_IS_OBJECT (&val))
+  if (!SWFDEC_AS_VALUE_IS_OBJECT (*&val))
     return;
-  proto = SWFDEC_AS_VALUE_GET_OBJECT (&val);
+  proto = SWFDEC_AS_VALUE_GET_OBJECT (*&val);
 
   swfdec_as_object_add_native_variable (proto, SWFDEC_AS_STR_align,
       swfdec_text_format_do_get_align, swfdec_text_format_do_set_align);
diff --git a/swfdec/swfdec_transform_as.c b/swfdec/swfdec_transform_as.c
index 9724425..380f43d 100644
--- a/swfdec/swfdec_transform_as.c
+++ b/swfdec/swfdec_transform_as.c
@@ -253,7 +253,7 @@ swfdec_transform_as_construct (SwfdecAsContext *cx, SwfdecAsObject *object,
   SWFDEC_AS_CHECK (0, NULL, "M", &movie);
 
   trans = g_object_new (SWFDEC_TYPE_TRANSFORM_AS, "context", cx, NULL);
-  trans->target = SWFDEC_AS_VALUE_GET_MOVIE (&argv[0]);
+  trans->target = SWFDEC_AS_VALUE_GET_MOVIE (*&argv[0]);
   swfdec_as_object_set_relay (object, SWFDEC_AS_RELAY (trans));
   SWFDEC_AS_VALUE_SET_OBJECT (ret, object);
 }
diff --git a/swfdec/swfdec_video_movie_as.c b/swfdec/swfdec_video_movie_as.c
index fccb24e..386726d 100644
--- a/swfdec/swfdec_video_movie_as.c
+++ b/swfdec/swfdec_video_movie_as.c
@@ -137,14 +137,14 @@ swfdec_video_movie_init_properties (SwfdecAsContext *cx)
   g_return_if_fail (SWFDEC_IS_AS_CONTEXT (cx));
 
   swfdec_as_object_get_variable (cx->global, SWFDEC_AS_STR_Video, &val);
-  if (!SWFDEC_AS_VALUE_IS_OBJECT (&val))
+  if (!SWFDEC_AS_VALUE_IS_OBJECT (*&val))
     return;
-  video = SWFDEC_AS_VALUE_GET_OBJECT (&val);
+  video = SWFDEC_AS_VALUE_GET_OBJECT (*&val);
 
   swfdec_as_object_get_variable (video, SWFDEC_AS_STR_prototype, &val);
-  if (!SWFDEC_AS_VALUE_IS_OBJECT (&val))
+  if (!SWFDEC_AS_VALUE_IS_OBJECT (*&val))
     return;
-  proto = SWFDEC_AS_VALUE_GET_OBJECT (&val);
+  proto = SWFDEC_AS_VALUE_GET_OBJECT (*&val);
 
   swfdec_as_object_add_native_variable (proto, SWFDEC_AS_STR_width, 
       swfdec_video_get_width, NULL);
diff --git a/swfdec/swfdec_xml.c b/swfdec/swfdec_xml.c
index 1a5658b..ed20458 100644
--- a/swfdec/swfdec_xml.c
+++ b/swfdec/swfdec_xml.c
@@ -205,7 +205,7 @@ swfdec_xml_set_ignoreWhite (SwfdecAsContext *cx, SwfdecAsObject *object,
   SWFDEC_AS_CHECK (SWFDEC_TYPE_XML, &xml, "s", &ignore);
 
   // special case
-  if (SWFDEC_AS_VALUE_IS_UNDEFINED (&argv[0]))
+  if (SWFDEC_AS_VALUE_IS_UNDEFINED (*&argv[0]))
     return;
 
   xml->ignore_white =
@@ -237,7 +237,7 @@ swfdec_xml_set_xmlDecl (SwfdecAsContext *cx, SwfdecAsObject *object,
   SWFDEC_AS_CHECK (SWFDEC_TYPE_XML, &xml, "s", &s);
 
   // special case
-  if (SWFDEC_AS_VALUE_IS_UNDEFINED (&argv[0]))
+  if (SWFDEC_AS_VALUE_IS_UNDEFINED (*&argv[0]))
     return;
 
   xml->xml_decl = s;
@@ -268,7 +268,7 @@ swfdec_xml_set_docTypeDecl (SwfdecAsContext *cx, SwfdecAsObject *object,
   SWFDEC_AS_CHECK (SWFDEC_TYPE_XML, &xml, "s", &s);
 
   // special case
-  if (SWFDEC_AS_VALUE_IS_UNDEFINED (&argv[0]))
+  if (SWFDEC_AS_VALUE_IS_UNDEFINED (*&argv[0]))
     return;
 
   xml->doc_type_decl = s;
@@ -295,7 +295,7 @@ swfdec_xml_set_contentType (SwfdecAsContext *cx, SwfdecAsObject *object,
   SWFDEC_AS_CHECK (SWFDEC_TYPE_XML, &xml, "v", &val);
 
   // special case
-  if (SWFDEC_AS_VALUE_IS_UNDEFINED (&val))
+  if (SWFDEC_AS_VALUE_IS_UNDEFINED (*&val))
     return;
 
   xml->content_type = val;
@@ -322,7 +322,7 @@ swfdec_xml_set_loaded (SwfdecAsContext *cx, SwfdecAsObject *object,
   SWFDEC_AS_CHECK (SWFDEC_TYPE_XML, &xml, "s", &ignore);
 
   // special case
-  if (SWFDEC_AS_VALUE_IS_UNDEFINED (&argv[0]))
+  if (SWFDEC_AS_VALUE_IS_UNDEFINED (*&argv[0]))
     return;
 
   SWFDEC_AS_VALUE_SET_BOOLEAN (&xml->loaded,
@@ -351,7 +351,7 @@ swfdec_xml_set_status (SwfdecAsContext *cx, SwfdecAsObject *object,
   SWFDEC_AS_CHECK (SWFDEC_TYPE_XML, &xml, "s", &ignore);
 
   // special case
-  if (SWFDEC_AS_VALUE_IS_UNDEFINED (&argv[0]))
+  if (SWFDEC_AS_VALUE_IS_UNDEFINED (*&argv[0]))
     return;
 
   d = swfdec_as_value_to_number (cx, &argv[0]);
@@ -478,8 +478,8 @@ swfdec_xml_add_id_map (SwfdecXml *xml, SwfdecXmlNode *node, const char *id)
   if (context->version >= 8) {
     if (swfdec_as_object_get_variable (object,
 	  SWFDEC_AS_STR_idMap, &val)) {
-      if (SWFDEC_AS_VALUE_IS_OBJECT (&val)) {
-	object = SWFDEC_AS_VALUE_GET_OBJECT (&val);
+      if (SWFDEC_AS_VALUE_IS_OBJECT (*&val)) {
+	object = SWFDEC_AS_VALUE_GET_OBJECT (*&val);
       } else {
 	return;
       }
@@ -792,7 +792,7 @@ swfdec_xml_do_parseXML (SwfdecAsContext *cx, SwfdecAsObject *object, guint argc,
 
   SWFDEC_AS_CHECK (SWFDEC_TYPE_XML, &xml, "s", &s);
 
-  if (SWFDEC_AS_VALUE_IS_UNDEFINED (&argv[0]))
+  if (SWFDEC_AS_VALUE_IS_UNDEFINED (*&argv[0]))
     return;
 
   swfdec_xml_parseXML (xml, s);
@@ -810,7 +810,7 @@ swfdec_xml_createElement (SwfdecAsContext *cx, SwfdecAsObject *object,
   SWFDEC_AS_CHECK (SWFDEC_TYPE_XML, &xml, "s", &s);
 
   // special case
-  if (SWFDEC_AS_VALUE_IS_UNDEFINED (&argv[0]))
+  if (SWFDEC_AS_VALUE_IS_UNDEFINED (*&argv[0]))
     return;
 
   node = swfdec_xml_node_new (cx, SWFDEC_XML_NODE_ELEMENT, s);
@@ -830,7 +830,7 @@ swfdec_xml_createTextNode (SwfdecAsContext *cx, SwfdecAsObject *object,
   SWFDEC_AS_CHECK (SWFDEC_TYPE_XML, &xml, "s", &s);
 
   // special case
-  if (SWFDEC_AS_VALUE_IS_UNDEFINED (&argv[0]))
+  if (SWFDEC_AS_VALUE_IS_UNDEFINED (*&argv[0]))
     return;
 
   node = swfdec_xml_node_new (cx, SWFDEC_XML_NODE_TEXT, s);
@@ -851,14 +851,14 @@ swfdec_xml_init_properties (SwfdecAsContext *cx)
   g_return_if_fail (SWFDEC_IS_AS_CONTEXT (cx));
 
   swfdec_as_object_get_variable (cx->global, SWFDEC_AS_STR_XML, &val);
-  if (!SWFDEC_AS_VALUE_IS_OBJECT (&val))
+  if (!SWFDEC_AS_VALUE_IS_OBJECT (*&val))
     return;
-  xml = SWFDEC_AS_VALUE_GET_OBJECT (&val);
+  xml = SWFDEC_AS_VALUE_GET_OBJECT (*&val);
 
   swfdec_as_object_get_variable (xml, SWFDEC_AS_STR_prototype, &val);
-  if (!SWFDEC_AS_VALUE_IS_OBJECT (&val))
+  if (!SWFDEC_AS_VALUE_IS_OBJECT (*&val))
     return;
-  proto = SWFDEC_AS_VALUE_GET_OBJECT (&val);
+  proto = SWFDEC_AS_VALUE_GET_OBJECT (*&val);
 
   swfdec_as_object_add_native_variable (proto, SWFDEC_AS_STR_ignoreWhite,
       swfdec_xml_get_ignoreWhite, swfdec_xml_set_ignoreWhite);
@@ -896,7 +896,7 @@ swfdec_xml_construct (SwfdecAsContext *cx, SwfdecAsObject *object,
   if (!SWFDEC_IS_VALID_XML_NODE (xml))
     return;
 
-  if (argc >= 1 && !SWFDEC_AS_VALUE_IS_UNDEFINED (&argv[0])) {
+  if (argc >= 1 && !SWFDEC_AS_VALUE_IS_UNDEFINED (*&argv[0])) {
     swfdec_xml_parseXML (xml, swfdec_as_value_to_string (cx, argv[0]));
   }
 }
diff --git a/swfdec/swfdec_xml_node.c b/swfdec/swfdec_xml_node.c
index 5dddc62..47eb72f 100644
--- a/swfdec/swfdec_xml_node.c
+++ b/swfdec/swfdec_xml_node.c
@@ -95,11 +95,11 @@ swfdec_xml_node_get_child (SwfdecXmlNode *node, gint32 index_)
 
   swfdec_as_array_get_value (node->children, index_, &val);
 
-  g_return_val_if_fail (SWFDEC_AS_VALUE_IS_OBJECT (&val), NULL);
+  g_return_val_if_fail (SWFDEC_AS_VALUE_IS_OBJECT (*&val), NULL);
   g_return_val_if_fail (SWFDEC_IS_VALID_XML_NODE (
-	SWFDEC_AS_VALUE_GET_OBJECT (&val)->relay), NULL);
+	SWFDEC_AS_VALUE_GET_OBJECT (*&val)->relay), NULL);
 
-  return SWFDEC_XML_NODE (SWFDEC_AS_VALUE_GET_OBJECT (&val)->relay);
+  return SWFDEC_XML_NODE (SWFDEC_AS_VALUE_GET_OBJECT (*&val)->relay);
 }
 
 static gint32
@@ -178,7 +178,7 @@ swfdec_xml_node_getNamespaceForPrefix (SwfdecXmlNode *node, const char *prefix)
 
   do {
     swfdec_as_object_get_variable (node->attributes, var, &val);
-    if (!SWFDEC_AS_VALUE_IS_UNDEFINED (&val)) {
+    if (!SWFDEC_AS_VALUE_IS_UNDEFINED (*&val)) {
       return swfdec_as_value_to_string (swfdec_gc_object_get_context (node), val);
     }
     node = node->parent;
@@ -330,7 +330,7 @@ swfdec_xml_node_set_nodeName (SwfdecAsContext *cx, SwfdecAsObject *object,
     return;
 
   // special case
-  if (SWFDEC_AS_VALUE_IS_UNDEFINED (&argv[0]))
+  if (SWFDEC_AS_VALUE_IS_UNDEFINED (*&argv[0]))
     return;
 
   node->name = name;
@@ -1026,14 +1026,14 @@ swfdec_xml_node_init_properties (SwfdecAsContext *cx)
   g_return_if_fail (SWFDEC_IS_AS_CONTEXT (cx));
 
   swfdec_as_object_get_variable (cx->global, SWFDEC_AS_STR_XMLNode, &val);
-  if (!SWFDEC_AS_VALUE_IS_OBJECT (&val))
+  if (!SWFDEC_AS_VALUE_IS_OBJECT (*&val))
     return;
-  node = SWFDEC_AS_VALUE_GET_OBJECT (&val);
+  node = SWFDEC_AS_VALUE_GET_OBJECT (*&val);
 
   swfdec_as_object_get_variable (node, SWFDEC_AS_STR_prototype, &val);
-  if (!SWFDEC_AS_VALUE_IS_OBJECT (&val))
+  if (!SWFDEC_AS_VALUE_IS_OBJECT (*&val))
     return;
-  proto = SWFDEC_AS_VALUE_GET_OBJECT (&val);
+  proto = SWFDEC_AS_VALUE_GET_OBJECT (*&val);
 
   swfdec_as_object_add_native_variable (proto, SWFDEC_AS_STR_nodeType,
       swfdec_xml_node_get_nodeType, NULL);
@@ -1109,8 +1109,8 @@ swfdec_xml_node_construct (SwfdecAsContext *cx, SwfdecAsObject *object,
 
   SWFDEC_AS_CHECK (0, NULL, "is", &type, &value);
 
-  if (SWFDEC_AS_VALUE_IS_UNDEFINED (&argv[0]) ||
-      SWFDEC_AS_VALUE_IS_UNDEFINED (&argv[1]))
+  if (SWFDEC_AS_VALUE_IS_UNDEFINED (*&argv[0]) ||
+      SWFDEC_AS_VALUE_IS_UNDEFINED (*&argv[1]))
     return;
 
   swfdec_xml_node_init_properties (cx);
diff --git a/test/swfdec_test_buffer.c b/test/swfdec_test_buffer.c
index 953013f..97d4dd8 100644
--- a/test/swfdec_test_buffer.c
+++ b/test/swfdec_test_buffer.c
@@ -268,11 +268,11 @@ swfdec_test_buffer_from_args (SwfdecAsContext *cx, guint argc, SwfdecAsValue *ar
   queue = swfdec_buffer_queue_new ();
   for (i = 0; i < argc; i++) {
     SwfdecBuffer *b = NULL;
-    if (SWFDEC_AS_VALUE_IS_OBJECT (&argv[i])) {
-      SwfdecAsObject *o = SWFDEC_AS_VALUE_GET_OBJECT (&argv[i]);
+    if (SWFDEC_AS_VALUE_IS_OBJECT (argv[i])) {
+      SwfdecAsObject *o = SWFDEC_AS_VALUE_GET_OBJECT (argv[i]);
       if (SWFDEC_IS_TEST_BUFFER (o->relay))
 	b = swfdec_buffer_ref (SWFDEC_TEST_BUFFER (o->relay)->buffer);
-    } else if (SWFDEC_AS_VALUE_IS_NUMBER (&argv[i])) {
+    } else if (SWFDEC_AS_VALUE_IS_NUMBER (argv[i])) {
       b = swfdec_buffer_new (1);
       b->data[0] = swfdec_as_value_to_integer (cx, &argv[i]);
     }
commit 57201dc365aa3887458371caf54bdd0925aa0ecf
Author: Benjamin Otte <otte at gnome.org>
Date:   Thu Nov 6 11:21:15 2008 +0100

    make SWFDEC_AS_VALUE_GET_[TYPE|VALUE]() take a value, not a pointer
    
    also reowkr swfdec_as_value_mark to be clearer

diff --git a/swfdec/swfdec_as_context.c b/swfdec/swfdec_as_context.c
index 8bec3c1..8ab5c8c 100644
--- a/swfdec/swfdec_as_context.c
+++ b/swfdec/swfdec_as_context.c
@@ -352,17 +352,34 @@ swfdec_as_string_mark (const char *string)
 void
 swfdec_as_value_mark (SwfdecAsValue *value)
 {
-  SwfdecAsGcable *gcable = SWFDEC_AS_VALUE_GET_VALUE (value);
-  if (SWFDEC_AS_VALUE_IS_OBJECT (value)) {
-    if (!SWFDEC_AS_GCABLE_FLAG_IS_SET (gcable, SWFDEC_AS_GC_MARK))
+  SwfdecAsGcable *gcable;
+  SwfdecAsValueType type = SWFDEC_AS_VALUE_GET_TYPE (*value);
+  
+  if (!SWFDEC_AS_TYPE_IS_GCABLE (type))
+    return;
+
+  gcable = SWFDEC_AS_VALUE_GET_VALUE (*value);
+  if (SWFDEC_AS_GCABLE_FLAG_IS_SET (gcable, SWFDEC_AS_GC_ROOT | SWFDEC_AS_GC_MARK))
+    return;
+
+  switch (type) {
+    case SWFDEC_AS_TYPE_STRING:
+    case SWFDEC_AS_TYPE_NUMBER:
+      SWFDEC_AS_GCABLE_SET_FLAG (gcable, SWFDEC_AS_GC_MARK);
+      break;
+    case SWFDEC_AS_TYPE_OBJECT:
       swfdec_as_object_mark ((SwfdecAsObject *) gcable);
-  } else if (SWFDEC_AS_VALUE_IS_MOVIE (value)) {
-    if (!SWFDEC_AS_GCABLE_FLAG_IS_SET (gcable, SWFDEC_AS_GC_MARK))
+      break;
+    case SWFDEC_AS_TYPE_MOVIE:
       swfdec_as_movie_value_mark ((SwfdecAsMovieValue *) gcable);
-  } else if (SWFDEC_AS_VALUE_IS_STRING (value) ||
-      SWFDEC_AS_VALUE_IS_NUMBER (value)) {
-    if (!SWFDEC_AS_GCABLE_FLAG_IS_SET (gcable, SWFDEC_AS_GC_ROOT | SWFDEC_AS_GC_MARK))
-      SWFDEC_AS_GCABLE_SET_FLAG (gcable, SWFDEC_AS_GC_MARK);
+      break;
+    case SWFDEC_AS_TYPE_UNDEFINED:
+    case SWFDEC_AS_TYPE_NULL:
+    case SWFDEC_AS_TYPE_BOOLEAN:
+    case SWFDEC_AS_TYPE_INT:
+    default:
+      g_assert_not_reached ();
+      break;
   }
 }
 
diff --git a/swfdec/swfdec_as_internal.h b/swfdec/swfdec_as_internal.h
index 4f64951..4ab5bb1 100644
--- a/swfdec/swfdec_as_internal.h
+++ b/swfdec/swfdec_as_internal.h
@@ -37,7 +37,7 @@ G_BEGIN_DECLS
 #define SWFDEC_AS_OBJECT_PROTOTYPE_RECURSION_LIMIT 256
 
 /* swfdec_as_types.h */
-#define SWFDEC_AS_VALUE_IS_COMPOSITE(val) (SWFDEC_AS_VALUE_GET_TYPE (val) >= SWFDEC_AS_TYPE_OBJECT)
+#define SWFDEC_AS_VALUE_IS_COMPOSITE(val) (SWFDEC_AS_VALUE_GET_TYPE (*(val)) >= SWFDEC_AS_TYPE_OBJECT)
 #define SWFDEC_AS_VALUE_IS_PRIMITIVE(val) (!SWFDEC_AS_VALUE_IS_COMPOSITE(val))
 /* FIXME: ugly macro */
 #define SWFDEC_AS_VALUE_GET_COMPOSITE(val) (SWFDEC_AS_VALUE_IS_OBJECT (val) ? \
@@ -52,9 +52,9 @@ G_BEGIN_DECLS
   } \
 } G_STMT_END
 
-#define SWFDEC_AS_VALUE_IS_MOVIE(val) (SWFDEC_AS_VALUE_GET_TYPE (val) == SWFDEC_AS_TYPE_MOVIE)
-#define SWFDEC_AS_VALUE_GET_MOVIE(val) (((SwfdecAsMovieValue *) SWFDEC_AS_VALUE_GET_VALUE (val))->movie ? \
-    ((SwfdecAsMovieValue *) SWFDEC_AS_VALUE_GET_VALUE (val))->movie : swfdec_as_movie_value_get (SWFDEC_AS_VALUE_GET_VALUE (val)))
+#define SWFDEC_AS_VALUE_IS_MOVIE(val) (SWFDEC_AS_VALUE_GET_TYPE (*(val)) == SWFDEC_AS_TYPE_MOVIE)
+#define SWFDEC_AS_VALUE_GET_MOVIE(val) (((SwfdecAsMovieValue *) SWFDEC_AS_VALUE_GET_VALUE (*(val)))->movie ? \
+    ((SwfdecAsMovieValue *) SWFDEC_AS_VALUE_GET_VALUE (*(val)))->movie : swfdec_as_movie_value_get (SWFDEC_AS_VALUE_GET_VALUE (*(val))))
 #define SWFDEC_AS_VALUE_FROM_MOVIE(m) SWFDEC_AS_VALUE_COMBINE (m->as_value, SWFDEC_AS_TYPE_MOVIE)
 #define SWFDEC_AS_VALUE_SET_MOVIE(val,m) G_STMT_START { \
   SwfdecMovie *__m = (m); \
diff --git a/swfdec/swfdec_as_interpret.c b/swfdec/swfdec_as_interpret.c
index 77a3219..13d3b52 100644
--- a/swfdec/swfdec_as_interpret.c
+++ b/swfdec/swfdec_as_interpret.c
@@ -1424,8 +1424,8 @@ swfdec_action_equals2_5 (SwfdecAsContext *cx, guint action, const guint8 *data,
   ltmp = *lval;
   swfdec_as_value_to_primitive (&rtmp);
   swfdec_as_value_to_primitive (&ltmp);
-  ltype = SWFDEC_AS_VALUE_GET_TYPE (&ltmp);
-  rtype = SWFDEC_AS_VALUE_GET_TYPE (&rtmp);
+  ltype = SWFDEC_AS_VALUE_GET_TYPE (ltmp);
+  rtype = SWFDEC_AS_VALUE_GET_TYPE (rtmp);
   
   if (SWFDEC_AS_VALUE_IS_COMPOSITE (&ltmp) && SWFDEC_AS_VALUE_IS_COMPOSITE (&rtmp)) {
     /* get movies compared */
@@ -1521,8 +1521,8 @@ swfdec_action_equals2_6 (SwfdecAsContext *cx, guint action, const guint8 *data,
     goto out;
   }
 
-  ltype = SWFDEC_AS_VALUE_GET_TYPE (lval);
-  rtype = SWFDEC_AS_VALUE_GET_TYPE (rval);
+  ltype = SWFDEC_AS_VALUE_GET_TYPE (*lval);
+  rtype = SWFDEC_AS_VALUE_GET_TYPE (*rval);
 
   /* get rid of undefined and null */
   cond = rtype == SWFDEC_AS_TYPE_UNDEFINED || rtype == SWFDEC_AS_TYPE_NULL;
@@ -1573,10 +1573,10 @@ swfdec_action_strict_equals (SwfdecAsContext *cx, guint action, const guint8 *da
   rval = swfdec_as_stack_peek (cx, 1);
   lval = swfdec_as_stack_peek (cx, 2);
 
-  if (SWFDEC_AS_VALUE_GET_TYPE (rval) != SWFDEC_AS_VALUE_GET_TYPE (lval)) {
+  if (SWFDEC_AS_VALUE_GET_TYPE (*rval) != SWFDEC_AS_VALUE_GET_TYPE (*lval)) {
     cond = FALSE;
   } else {
-    switch (SWFDEC_AS_VALUE_GET_TYPE (rval)) {
+    switch (SWFDEC_AS_VALUE_GET_TYPE (*rval)) {
       case SWFDEC_AS_TYPE_UNDEFINED:
       case SWFDEC_AS_TYPE_NULL:
 	cond = TRUE;
@@ -2149,10 +2149,10 @@ swfdec_action_to_string (SwfdecAsContext *cx, guint action, const guint8 *data,
 static void
 swfdec_action_type_of (SwfdecAsContext *cx, guint action, const guint8 *data, guint len)
 {
-  SwfdecAsValue *val;
+  SwfdecAsValue val;
   const char *type;
 
-  val = swfdec_as_stack_peek (cx, 1);
+  val = *swfdec_as_stack_peek (cx, 1);
   switch (SWFDEC_AS_VALUE_GET_TYPE (val)) {
     case SWFDEC_AS_TYPE_NUMBER:
       type = SWFDEC_AS_STR_number;
@@ -2171,7 +2171,7 @@ swfdec_action_type_of (SwfdecAsContext *cx, guint action, const guint8 *data, gu
       break;
     case SWFDEC_AS_TYPE_OBJECT:
       {
-	SwfdecAsObject *obj = SWFDEC_AS_VALUE_GET_OBJECT (val);
+	SwfdecAsObject *obj = SWFDEC_AS_VALUE_GET_OBJECT (&val);
 	if (SWFDEC_IS_AS_FUNCTION (obj->relay)) {
 	  type = SWFDEC_AS_STR_function;
 	} else {
@@ -2181,7 +2181,7 @@ swfdec_action_type_of (SwfdecAsContext *cx, guint action, const guint8 *data, gu
       break;
     case SWFDEC_AS_TYPE_MOVIE:
       {
-	SwfdecMovie *movie = SWFDEC_AS_VALUE_GET_MOVIE (val);
+	SwfdecMovie *movie = SWFDEC_AS_VALUE_GET_MOVIE (&val);
 	if (SWFDEC_IS_TEXT_FIELD_MOVIE (movie) &&
 	    movie->state == SWFDEC_MOVIE_STATE_RUNNING) {
 	  type = SWFDEC_AS_STR_object;
@@ -2196,7 +2196,7 @@ swfdec_action_type_of (SwfdecAsContext *cx, guint action, const guint8 *data, gu
       type = SWFDEC_AS_STR_EMPTY;
       break;
   }
-  SWFDEC_AS_VALUE_SET_STRING (val, type);
+  SWFDEC_AS_VALUE_SET_STRING (&val, type);
 }
 
 static void
diff --git a/swfdec/swfdec_as_types.c b/swfdec/swfdec_as_types.c
index 62551e9..b3d34f1 100644
--- a/swfdec/swfdec_as_types.c
+++ b/swfdec/swfdec_as_types.c
@@ -386,7 +386,7 @@ swfdec_as_value_to_string (SwfdecAsContext *context, SwfdecAsValue value)
 {
   g_return_val_if_fail (SWFDEC_IS_AS_CONTEXT (context), SWFDEC_AS_STR_EMPTY);
 
-  switch (SWFDEC_AS_VALUE_GET_TYPE (&value)) {
+  switch (SWFDEC_AS_VALUE_GET_TYPE (value)) {
     case SWFDEC_AS_TYPE_STRING:
       return SWFDEC_AS_VALUE_GET_STRING (&value);
     case SWFDEC_AS_TYPE_UNDEFINED:
@@ -457,7 +457,7 @@ swfdec_as_value_to_number (SwfdecAsContext *context, const SwfdecAsValue *value)
   tmp = *value;
   swfdec_as_value_to_primitive (&tmp);
 
-  switch (SWFDEC_AS_VALUE_GET_TYPE (&tmp)) {
+  switch (SWFDEC_AS_VALUE_GET_TYPE (tmp)) {
     case SWFDEC_AS_TYPE_UNDEFINED:
     case SWFDEC_AS_TYPE_NULL:
       return (context->version >= 7) ? NAN : 0.0;
@@ -566,7 +566,7 @@ swfdec_as_value_to_object (SwfdecAsContext *context, const SwfdecAsValue *value)
 
   g_return_val_if_fail (SWFDEC_IS_AS_CONTEXT (context), NULL);
 
-  switch (SWFDEC_AS_VALUE_GET_TYPE (value)) {
+  switch (SWFDEC_AS_VALUE_GET_TYPE (*value)) {
     case SWFDEC_AS_TYPE_UNDEFINED:
     case SWFDEC_AS_TYPE_NULL:
       return NULL;
@@ -617,7 +617,7 @@ swfdec_as_value_to_boolean (SwfdecAsContext *context, const SwfdecAsValue *value
   g_return_val_if_fail (SWFDEC_IS_AS_CONTEXT (context), FALSE);
 
   /* FIXME: what do we do when called in flash 4? */
-  switch (SWFDEC_AS_VALUE_GET_TYPE (value)) {
+  switch (SWFDEC_AS_VALUE_GET_TYPE (*value)) {
     case SWFDEC_AS_TYPE_UNDEFINED:
     case SWFDEC_AS_TYPE_NULL:
       return FALSE;
diff --git a/swfdec/swfdec_as_types.h b/swfdec/swfdec_as_types.h
index 50472b8..1064d4c 100644
--- a/swfdec/swfdec_as_types.h
+++ b/swfdec/swfdec_as_types.h
@@ -30,12 +30,13 @@ typedef enum {
   SWFDEC_AS_TYPE_UNDEFINED = 0,
   SWFDEC_AS_TYPE_NULL = 1,
   SWFDEC_AS_TYPE_BOOLEAN = 2,
-  SWFDEC_AS_TYPE_INT = 3, /* unimplemented, but reserved if someone wants it */
+  SWFDEC_AS_TYPE_INT = 3,
   SWFDEC_AS_TYPE_NUMBER = 4,
   SWFDEC_AS_TYPE_STRING = 5,
   SWFDEC_AS_TYPE_OBJECT = 6,
   SWFDEC_AS_TYPE_MOVIE = 7
 } SwfdecAsValueType;
+#define SWFDEC_AS_TYPE_IS_GCABLE(type) ((type) & 4)
 
 typedef struct _SwfdecAsContext SwfdecAsContext;
 typedef struct _SwfdecAsDebugger SwfdecAsDebugger;
@@ -62,18 +63,18 @@ typedef struct _SwfdecScript SwfdecScript;
 #define SWFDEC_AS_VALUE_TYPE_MASK ((1 << SWFDEC_AS_VALUE_TYPE_BITS) - 1)
 #define SWFDEC_AS_VALUE_VALUE_MASK (~SWFDEC_AS_VALUE_TYPE_MASK)
 
-#define SWFDEC_AS_VALUE_GET_TYPE(val) (*(val) & SWFDEC_AS_VALUE_TYPE_MASK)
-#define SWFDEC_AS_VALUE_GET_VALUE(val) GSIZE_TO_POINTER (*(val) & SWFDEC_AS_VALUE_VALUE_MASK)
+#define SWFDEC_AS_VALUE_GET_TYPE(val) ((val) & SWFDEC_AS_VALUE_TYPE_MASK)
+#define SWFDEC_AS_VALUE_GET_VALUE(val) GSIZE_TO_POINTER ((val) & SWFDEC_AS_VALUE_VALUE_MASK)
 #define SWFDEC_AS_VALUE_COMBINE(val, type) (GPOINTER_TO_SIZE (val) | type)
 
 #define SWFDEC_AS_VALUE_UNDEFINED SWFDEC_AS_VALUE_COMBINE (NULL, SWFDEC_AS_TYPE_UNDEFINED)
-#define SWFDEC_AS_VALUE_IS_UNDEFINED(val) (SWFDEC_AS_VALUE_GET_TYPE (val) == SWFDEC_AS_TYPE_UNDEFINED)
+#define SWFDEC_AS_VALUE_IS_UNDEFINED(val) (SWFDEC_AS_VALUE_GET_TYPE (*(val)) == SWFDEC_AS_TYPE_UNDEFINED)
 #define SWFDEC_AS_VALUE_SET_UNDEFINED(val) *(val) = SWFDEC_AS_VALUE_UNDEFINED
 
 #define SWFDEC_AS_VALUE_FALSE SWFDEC_AS_VALUE_COMBINE(NULL, SWFDEC_AS_TYPE_BOOLEAN)
 #define SWFDEC_AS_VALUE_TRUE SWFDEC_AS_VALUE_COMBINE(GSIZE_TO_POINTER (1 << SWFDEC_AS_VALUE_TYPE_BITS), SWFDEC_AS_TYPE_BOOLEAN)
-#define SWFDEC_AS_VALUE_IS_BOOLEAN(val) (SWFDEC_AS_VALUE_GET_TYPE (val) == SWFDEC_AS_TYPE_BOOLEAN)
-#define SWFDEC_AS_VALUE_GET_BOOLEAN(val) (SWFDEC_AS_VALUE_GET_VALUE (val) != NULL)
+#define SWFDEC_AS_VALUE_IS_BOOLEAN(val) (SWFDEC_AS_VALUE_GET_TYPE (*(val)) == SWFDEC_AS_TYPE_BOOLEAN)
+#define SWFDEC_AS_VALUE_GET_BOOLEAN(val) (SWFDEC_AS_VALUE_GET_VALUE (*(val)) != NULL)
 #define SWFDEC_AS_VALUE_FROM_BOOLEAN(b) (b ? SWFDEC_AS_VALUE_TRUE : SWFDEC_AS_VALUE_FALSE)
 #define SWFDEC_AS_VALUE_SET_BOOLEAN(val,b) G_STMT_START { \
   gboolean __tmp = (b); \
@@ -86,22 +87,22 @@ struct _SwfdecAsDoubleValue {
   double		number;
 };
 
-#define SWFDEC_AS_VALUE_IS_NUMBER(val) (SWFDEC_AS_VALUE_GET_TYPE (val) == SWFDEC_AS_TYPE_NUMBER)
-#define SWFDEC_AS_VALUE_GET_NUMBER(val) (((SwfdecAsDoubleValue *) SWFDEC_AS_VALUE_GET_VALUE(val))->number)
+#define SWFDEC_AS_VALUE_IS_NUMBER(val) (SWFDEC_AS_VALUE_GET_TYPE (*(val)) == SWFDEC_AS_TYPE_NUMBER)
+#define SWFDEC_AS_VALUE_GET_NUMBER(val) (((SwfdecAsDoubleValue *) SWFDEC_AS_VALUE_GET_VALUE(*(val)))->number)
 
-#define SWFDEC_AS_VALUE_IS_STRING(val) (SWFDEC_AS_VALUE_GET_TYPE (val) == SWFDEC_AS_TYPE_STRING)
-#define SWFDEC_AS_VALUE_GET_STRING(val) (((SwfdecAsStringValue *) SWFDEC_AS_VALUE_GET_VALUE(val))->string)
+#define SWFDEC_AS_VALUE_IS_STRING(val) (SWFDEC_AS_VALUE_GET_TYPE (*(val)) == SWFDEC_AS_TYPE_STRING)
+#define SWFDEC_AS_VALUE_GET_STRING(val) (((SwfdecAsStringValue *) SWFDEC_AS_VALUE_GET_VALUE(*(val)))->string)
 #define SWFDEC_AS_VALUE_FROM_STRING(s) SWFDEC_AS_VALUE_COMBINE (((guint8 *) (s) - G_STRUCT_OFFSET (SwfdecAsStringValue, string)), SWFDEC_AS_TYPE_STRING)
 #define SWFDEC_AS_VALUE_SET_STRING(val,s) G_STMT_START { \
   *(val) = SWFDEC_AS_VALUE_FROM_STRING (s); \
 } G_STMT_END
 
 #define SWFDEC_AS_VALUE_NULL SWFDEC_AS_VALUE_COMBINE (NULL, SWFDEC_AS_TYPE_NULL)
-#define SWFDEC_AS_VALUE_IS_NULL(val) (SWFDEC_AS_VALUE_GET_TYPE (val) == SWFDEC_AS_TYPE_NULL)
+#define SWFDEC_AS_VALUE_IS_NULL(val) (SWFDEC_AS_VALUE_GET_TYPE (*(val)) == SWFDEC_AS_TYPE_NULL)
 #define SWFDEC_AS_VALUE_SET_NULL(val) *(val) = SWFDEC_AS_VALUE_NULL
 
-#define SWFDEC_AS_VALUE_IS_OBJECT(val) (SWFDEC_AS_VALUE_GET_TYPE (val) == SWFDEC_AS_TYPE_OBJECT)
-#define SWFDEC_AS_VALUE_GET_OBJECT(val) ((SwfdecAsObject *) SWFDEC_AS_VALUE_GET_VALUE (val))
+#define SWFDEC_AS_VALUE_IS_OBJECT(val) (SWFDEC_AS_VALUE_GET_TYPE (*(val)) == SWFDEC_AS_TYPE_OBJECT)
+#define SWFDEC_AS_VALUE_GET_OBJECT(val) ((SwfdecAsObject *) SWFDEC_AS_VALUE_GET_VALUE (*(val)))
 #define SWFDEC_AS_VALUE_FROM_OBJECT(o) SWFDEC_AS_VALUE_COMBINE (o, SWFDEC_AS_TYPE_OBJECT)
 #define SWFDEC_AS_VALUE_SET_OBJECT(val,o) G_STMT_START { \
   SwfdecAsObject *__o = (o); \
diff --git a/swfdec/swfdec_net_connection.c b/swfdec/swfdec_net_connection.c
index 29f0a04..b601932 100644
--- a/swfdec/swfdec_net_connection.c
+++ b/swfdec/swfdec_net_connection.c
@@ -112,7 +112,7 @@ swfdec_net_connection_do_connect (SwfdecAsContext *cx, SwfdecAsObject *object,
     url = NULL;
   } else {
     SWFDEC_FIXME ("untested argument to NetConnection.connect: type %u",
-	SWFDEC_AS_VALUE_GET_TYPE (&val));
+	SWFDEC_AS_VALUE_GET_TYPE (val));
     url = NULL;
   }
   swfdec_net_connection_connect (conn, url);
diff --git a/swfdec/swfdec_resource.c b/swfdec/swfdec_resource.c
index 0f1619f..c271ca5 100644
--- a/swfdec/swfdec_resource.c
+++ b/swfdec/swfdec_resource.c
@@ -131,7 +131,7 @@ swfdec_resource_emit_signal (SwfdecResource *resource, const char *name, gboolea
       return;
     }
     if (name == SWFDEC_AS_STR_onLoadInit &&
-	movie->as_value != SWFDEC_AS_VALUE_GET_VALUE (&resource->movie)) {
+	movie->as_value != SWFDEC_AS_VALUE_GET_VALUE (resource->movie)) {
       SWFDEC_INFO ("not emitting onLoadInit - the movie is different");
       return;
     }
commit 02d64c70d9d4d0ea150ab8bdbca8d79592661a45
Author: Benjamin Otte <otte at gnome.org>
Date:   Thu Nov 6 11:21:01 2008 +0100

    make swfdec_as_object_mark() only mark if not marked yet

diff --git a/swfdec/swfdec_as_object.c b/swfdec/swfdec_as_object.c
index e6a7ed4..4540cf2 100644
--- a/swfdec/swfdec_as_object.c
+++ b/swfdec/swfdec_as_object.c
@@ -231,6 +231,11 @@ swfdec_as_object_mark_watch (gpointer key, gpointer value, gpointer unused)
 void
 swfdec_as_object_mark (SwfdecAsObject *object)
 {
+  g_return_if_fail (object != NULL);
+
+  if (SWFDEC_AS_GCABLE_FLAG_IS_SET ((SwfdecAsGcable *) object, SWFDEC_AS_GC_MARK))
+    return;
+
   SWFDEC_AS_GCABLE_SET_FLAG ((SwfdecAsGcable *) object, SWFDEC_AS_GC_MARK);
 
   if (object->prototype)
commit 5d2f8525e3a82430a1d2470b114c8604d0e50ed7
Author: Benjamin Otte <otte at gnome.org>
Date:   Thu Nov 6 10:52:58 2008 +0100

    SwfdecAsValue * => SwfdecAsValue for swfdec_as_value_to_string()

diff --git a/swfdec/swfdec_as_array.c b/swfdec/swfdec_as_array.c
index c9f7d6d..7b4e370 100644
--- a/swfdec/swfdec_as_array.c
+++ b/swfdec/swfdec_as_array.c
@@ -530,7 +530,7 @@ swfdec_as_array_join (SwfdecAsContext *cx, SwfdecAsObject *object, guint argc,
     return;
 
   if (argc > 0) {
-    sep = swfdec_as_value_to_string (cx, &argv[0]);
+    sep = swfdec_as_value_to_string (cx, argv[0]);
   } else {
     sep = SWFDEC_AS_STR_COMMA;
   }
@@ -539,12 +539,12 @@ swfdec_as_array_join (SwfdecAsContext *cx, SwfdecAsObject *object, guint argc,
   if (swfdec_as_array_get_length (object) > 0) {
     GString *string;
     swfdec_as_object_get_variable (object, SWFDEC_AS_STR_0, &val);
-    str = swfdec_as_value_to_string (cx, &val);
+    str = swfdec_as_value_to_string (cx, val);
     string = g_string_new (str);
     for (i = 1; i < swfdec_as_array_get_length (object); i++) {
       var = swfdec_as_integer_to_string (cx, i);
       swfdec_as_object_get_variable (object, var, &val);
-      var = swfdec_as_value_to_string (cx, &val);
+      var = swfdec_as_value_to_string (cx, val);
       g_string_append (string, sep);
       g_string_append (string, var);
     }
@@ -882,8 +882,8 @@ swfdec_as_array_sort_compare_values (SwfdecAsContext *cx,
   {
     // can't pass swfdec_as_value_to_string calls directly to compare
     // functions, since the order of these is important
-    const char *a_str = swfdec_as_value_to_string (cx, a);
-    const char *b_str = swfdec_as_value_to_string (cx, b);
+    const char *a_str = swfdec_as_value_to_string (cx, *a);
+    const char *b_str = swfdec_as_value_to_string (cx, *b);
 
     if (options & SORT_OPTION_CASEINSENSITIVE) {
       retval = g_strcasecmp (a_str, b_str);
@@ -1227,7 +1227,7 @@ swfdec_as_array_sortOn (SwfdecAsContext *cx, SwfdecAsObject *object,
     fields = g_new (const char *, num_fields + 1);
     for (i = 0; i < num_fields; i++) {
       swfdec_as_array_get_value (array, i, &val);
-      fields[i] = swfdec_as_value_to_string (cx, &val);
+      fields[i] = swfdec_as_value_to_string (cx, val);
     }
 
     fields[i] = NULL;
@@ -1237,7 +1237,7 @@ swfdec_as_array_sortOn (SwfdecAsContext *cx, SwfdecAsObject *object,
     }
     num_fields = 1;
     fields = g_new (const char *, num_fields + 1);
-    fields[0] = swfdec_as_value_to_string (cx, &argv[0]);
+    fields[0] = swfdec_as_value_to_string (cx, argv[0]);
     fields[1] = NULL;
   }
 
diff --git a/swfdec/swfdec_as_context.c b/swfdec/swfdec_as_context.c
index 3759446..8bec3c1 100644
--- a/swfdec/swfdec_as_context.c
+++ b/swfdec/swfdec_as_context.c
@@ -1081,7 +1081,7 @@ swfdec_as_context_ASSetPropFlags (SwfdecAsContext *cx, SwfdecAsObject *object,
     swfdec_as_object_foreach (obj, swfdec_as_context_ASSetPropFlags_foreach, flags);
   } else {
     char **split =
-      g_strsplit (swfdec_as_value_to_string (cx, &argv[1]), ",", -1);
+      g_strsplit (swfdec_as_value_to_string (cx, argv[1]), ",", -1);
     guint i;
     for (i = 0; split[i]; i++) {
       swfdec_as_context_ASSetPropFlags_set_one_flag (obj, 
@@ -1197,7 +1197,7 @@ swfdec_as_context_parseFloat (SwfdecAsContext *cx, SwfdecAsObject *object,
 
   // we need to remove everything after x or I, since strtod parses hexadecimal
   // numbers and Infinity
-  s = g_strdup (swfdec_as_value_to_string (cx, &argv[0]));
+  s = g_strdup (swfdec_as_value_to_string (cx, argv[0]));
   if ((p = strpbrk (s, "xXiI")) != NULL) {
     *p = '\0';
   }
diff --git a/swfdec/swfdec_as_interpret.c b/swfdec/swfdec_as_interpret.c
index daeccef..77a3219 100644
--- a/swfdec/swfdec_as_interpret.c
+++ b/swfdec/swfdec_as_interpret.c
@@ -557,7 +557,7 @@ swfdec_player_get_movie_from_value (SwfdecPlayer *player, SwfdecAsValue *val)
   g_return_val_if_fail (SWFDEC_IS_PLAYER (player), NULL);
 
   cx = SWFDEC_AS_CONTEXT (player);
-  s = swfdec_as_value_to_string (cx, val);
+  s = swfdec_as_value_to_string (cx, *val);
   return swfdec_player_get_movie_from_string (player, s);
 }
 
@@ -650,7 +650,7 @@ swfdec_action_get_variable (SwfdecAsContext *cx, guint action, const guint8 *dat
   SwfdecAsObject *object;
 
   val = swfdec_as_stack_peek (cx, 1);
-  s = swfdec_as_value_to_string (cx, val);
+  s = swfdec_as_value_to_string (cx, *val);
   if (swfdec_action_get_movie_by_path (cx, s, &object, &s)) {
     if (object) {
       if (s) {
@@ -675,7 +675,7 @@ swfdec_action_set_variable (SwfdecAsContext *cx, guint action, const guint8 *dat
   const char *s, *rest;
   SwfdecAsObject *object;
 
-  s = swfdec_as_value_to_string (cx, swfdec_as_stack_peek (cx, 2));
+  s = swfdec_as_value_to_string (cx, *swfdec_as_stack_peek (cx, 2));
   if (swfdec_action_get_movie_by_path (cx, s, &object, &rest)) {
     if (object && rest) {
       swfdec_as_object_set_variable (object, swfdec_as_context_get_string (cx, rest), 
@@ -748,7 +748,7 @@ swfdec_action_get_member (SwfdecAsContext *cx, guint action, const guint8 *data,
   SwfdecAsObject *object = swfdec_as_value_to_object (cx, swfdec_as_stack_peek (cx, 2));
   if (object) {
     const char *name;
-    name = swfdec_as_value_to_string (cx, swfdec_as_stack_peek (cx, 1));
+    name = swfdec_as_value_to_string (cx, *swfdec_as_stack_peek (cx, 1));
     swfdec_as_object_get_variable (object, name, swfdec_as_stack_peek (cx, 2));
 #ifdef SWFDEC_WARN_MISSING_PROPERTIES
     if (SWFDEC_AS_VALUE_IS_UNDEFINED (swfdec_as_stack_peek (cx, 2))) {
@@ -765,7 +765,7 @@ swfdec_action_get_member (SwfdecAsContext *cx, guint action, const guint8 *data,
 static void
 swfdec_action_set_member (SwfdecAsContext *cx, guint action, const guint8 *data, guint len)
 {
-  const char *name = swfdec_as_value_to_string (cx, swfdec_as_stack_peek (cx, 2));
+  const char *name = swfdec_as_value_to_string (cx, *swfdec_as_stack_peek (cx, 2));
   if (SWFDEC_AS_VALUE_IS_COMPOSITE (swfdec_as_stack_peek (cx, 3))) {
     SwfdecAsObject *o = SWFDEC_AS_VALUE_GET_COMPOSITE (swfdec_as_stack_peek (cx, 3));
     if (o)
@@ -784,7 +784,7 @@ swfdec_action_trace (SwfdecAsContext *cx, guint action, const guint8 *data, guin
   if (SWFDEC_AS_VALUE_IS_UNDEFINED (val)) {
     s = SWFDEC_AS_STR_undefined;
   } else {
-    s = swfdec_as_value_to_string (cx, val);
+    s = swfdec_as_value_to_string (cx, *val);
   }
   swfdec_as_stack_pop (cx);
   g_signal_emit_by_name (cx, "trace", s);
@@ -839,7 +839,7 @@ swfdec_action_call_function (SwfdecAsContext *cx, guint action, const guint8 *da
   
   swfdec_as_stack_ensure_size (cx, 2);
   n_args = swfdec_as_value_to_integer (cx, swfdec_as_stack_peek (cx, 2));
-  name = swfdec_as_value_to_string (cx, swfdec_as_stack_peek (cx, 1));
+  name = swfdec_as_value_to_string (cx, *swfdec_as_stack_peek (cx, 1));
   thisp = swfdec_as_stack_peek (cx, 2);
   fun = swfdec_as_stack_peek (cx, 1);
   obj = swfdec_as_frame_get_variable (cx, frame, name, fun);
@@ -868,7 +868,7 @@ swfdec_action_call_method (SwfdecAsContext *cx, guint action, const guint8 *data
   n_args = swfdec_as_value_to_integer (cx, swfdec_as_stack_peek (cx, 3));
   val = swfdec_as_stack_peek (cx, 1);
   if (obj) {
-    name = swfdec_as_value_to_string (cx, val);
+    name = swfdec_as_value_to_string (cx, *val);
     if (SWFDEC_AS_VALUE_IS_UNDEFINED (val) ||
 	name == SWFDEC_AS_STR_EMPTY) {
       SWFDEC_AS_VALUE_SET_UNDEFINED (swfdec_as_stack_peek (cx, 3));
@@ -989,8 +989,8 @@ swfdec_action_add2 (SwfdecAsContext *cx, guint action, const guint8 *data, guint
 
   if (SWFDEC_AS_VALUE_IS_STRING (lval) || SWFDEC_AS_VALUE_IS_STRING (rval)) {
     const char *lstr, *rstr;
-    lstr = swfdec_as_value_to_string (cx, lval);
-    rstr = swfdec_as_value_to_string (cx, rval);
+    lstr = swfdec_as_value_to_string (cx, *lval);
+    rstr = swfdec_as_value_to_string (cx, *rval);
     lstr = swfdec_as_str_concat (cx, lstr, rstr);
     swfdec_as_stack_pop (cx);
     SWFDEC_AS_VALUE_SET_STRING (swfdec_as_stack_peek (cx, 1), lstr);
@@ -1191,7 +1191,7 @@ swfdec_as_interpret_encode_variables_foreach (SwfdecAsObject *object,
   g_string_append_c (variables, '=');
 
   escaped = swfdec_as_string_escape (context,
-      swfdec_as_value_to_string (context, value));
+      swfdec_as_value_to_string (context, *value));
   g_string_append (variables, escaped);
   g_free (escaped);
 
@@ -1231,7 +1231,7 @@ swfdec_action_get_url2 (SwfdecAsContext *cx, guint action, const guint8 *data, g
   internal = data[0] & 64;
   variables = data[0] & 128;
 
-  url = swfdec_as_value_to_string (cx, swfdec_as_stack_peek (cx, 2));
+  url = swfdec_as_value_to_string (cx, *swfdec_as_stack_peek (cx, 2));
   buffer = NULL;
 
   if (method == 1 || method == 2) {
@@ -1260,7 +1260,7 @@ swfdec_action_get_url2 (SwfdecAsContext *cx, guint action, const guint8 *data, g
   } else if (variables) {
     SwfdecMovie *movie;
     
-    target = swfdec_as_value_to_string (cx, swfdec_as_stack_peek (cx, 1));
+    target = swfdec_as_value_to_string (cx, *swfdec_as_stack_peek (cx, 1));
     movie = swfdec_player_get_movie_from_string (SWFDEC_PLAYER (cx), target);
     if (movie != NULL) {
       SWFDEC_AS_VALUE_SET_MOVIE (&val, movie);
@@ -1271,7 +1271,7 @@ swfdec_action_get_url2 (SwfdecAsContext *cx, guint action, const guint8 *data, g
     swfdec_resource_load_movie (SWFDEC_PLAYER (cx), swfdec_as_stack_peek (cx, 1), 
 	url, NULL, NULL);
   } else {
-    target = swfdec_as_value_to_string (cx, swfdec_as_stack_peek (cx, 1));
+    target = swfdec_as_value_to_string (cx, *swfdec_as_stack_peek (cx, 1));
     swfdec_resource_load (SWFDEC_PLAYER (cx), target, url, buffer);
   }
 
@@ -1283,8 +1283,8 @@ swfdec_action_string_add (SwfdecAsContext *cx, guint action, const guint8 *data,
 {
   const char *lval, *rval;
 
-  rval = swfdec_as_value_to_string (cx, swfdec_as_stack_peek (cx, 1));
-  lval = swfdec_as_value_to_string (cx, swfdec_as_stack_peek (cx, 2));
+  rval = swfdec_as_value_to_string (cx, *swfdec_as_stack_peek (cx, 1));
+  lval = swfdec_as_value_to_string (cx, *swfdec_as_stack_peek (cx, 2));
   lval = swfdec_as_str_concat (cx, lval, rval);
   SWFDEC_AS_VALUE_SET_STRING (swfdec_as_stack_peek (cx, 2), lval);
   swfdec_as_stack_pop (cx);
@@ -1348,7 +1348,7 @@ swfdec_action_string_extract (SwfdecAsContext *cx, guint action, const guint8 *d
 
   n = swfdec_as_value_to_integer (cx, swfdec_as_stack_peek (cx, 1));
   start = swfdec_as_value_to_integer (cx, swfdec_as_stack_peek (cx, 2));
-  s = swfdec_as_value_to_string (cx, swfdec_as_stack_peek (cx, 3));
+  s = swfdec_as_value_to_string (cx, *swfdec_as_stack_peek (cx, 3));
   swfdec_as_stack_pop_n (cx, 2);
   left = g_utf8_strlen (s, -1);
   if (start > left) {
@@ -1374,7 +1374,7 @@ swfdec_action_string_length (SwfdecAsContext *cx, guint action, const guint8 *da
   SwfdecAsValue *v;
 
   v = swfdec_as_stack_peek (cx, 1);
-  s = swfdec_as_value_to_string (cx, v);
+  s = swfdec_as_value_to_string (cx, *v);
   swfdec_as_value_set_integer (cx, v, g_utf8_strlen (s, -1));  
 }
 
@@ -1384,8 +1384,8 @@ swfdec_action_string_compare (SwfdecAsContext *cx, guint action, const guint8 *d
   const char *l, *r;
   gboolean cond;
 
-  r = swfdec_as_value_to_string (cx, swfdec_as_stack_peek (cx, 1));
-  l = swfdec_as_value_to_string (cx, swfdec_as_stack_peek (cx, 2));
+  r = swfdec_as_value_to_string (cx, *swfdec_as_stack_peek (cx, 1));
+  l = swfdec_as_value_to_string (cx, *swfdec_as_stack_peek (cx, 2));
   switch (action) {
     case SWFDEC_AS_ACTION_STRING_EQUALS:
       cond = l == r;
@@ -1647,7 +1647,7 @@ swfdec_action_set_target2 (SwfdecAsContext *cx, guint action, const guint8 *data
 {
   const char *s;
 
-  s = swfdec_as_value_to_string (cx, swfdec_as_stack_peek (cx, 1));
+  s = swfdec_as_value_to_string (cx, *swfdec_as_stack_peek (cx, 1));
   swfdec_action_do_set_target (cx, s, s + strlen (s));
   swfdec_as_stack_pop (cx);
 }
@@ -1739,7 +1739,7 @@ swfdec_action_new_method (SwfdecAsContext *cx, guint action, const guint8 *data,
   const char *name;
 
   swfdec_as_stack_ensure_size (cx, 3);
-  name = swfdec_as_value_to_string (cx, swfdec_as_stack_peek (cx, 1));
+  name = swfdec_as_value_to_string (cx, *swfdec_as_stack_peek (cx, 1));
 
   constructor = swfdec_as_stack_peek (cx, 2);
   n_args = swfdec_as_value_to_integer (cx, swfdec_as_stack_peek (cx, 3));
@@ -1789,7 +1789,7 @@ swfdec_action_init_object (SwfdecAsContext *cx, guint action, const guint8 *data
   object = swfdec_as_object_new (cx, NULL);
   swfdec_as_object_set_constructor_by_name (object, SWFDEC_AS_STR_Object, NULL);
   for (i = 0; i < n_args; i++) {
-    const char *s = swfdec_as_value_to_string (cx, swfdec_as_stack_peek (cx, 2));
+    const char *s = swfdec_as_value_to_string (cx, *swfdec_as_stack_peek (cx, 2));
     swfdec_as_object_set_variable (object, s, swfdec_as_stack_peek (cx, 1));
     swfdec_as_stack_pop_n (cx, 2);
   }
@@ -2031,7 +2031,7 @@ swfdec_action_define_local (SwfdecAsContext *cx, guint action, const guint8 *dat
 {
   const char *name;
 
-  name = swfdec_as_value_to_string (cx, swfdec_as_stack_peek (cx, 2));
+  name = swfdec_as_value_to_string (cx, *swfdec_as_stack_peek (cx, 2));
   swfdec_as_frame_set_variable (cx, cx->frame, name, swfdec_as_stack_peek (cx, 1),
       TRUE, TRUE);
   swfdec_as_stack_pop_n (cx, 2);
@@ -2043,7 +2043,7 @@ swfdec_action_define_local2 (SwfdecAsContext *cx, guint action, const guint8 *da
   SwfdecAsValue val = { 0, };
   const char *name;
 
-  name = swfdec_as_value_to_string (cx, swfdec_as_stack_peek (cx, 1));
+  name = swfdec_as_value_to_string (cx, *swfdec_as_stack_peek (cx, 1));
   swfdec_as_frame_set_variable (cx, cx->frame, name, &val, FALSE, TRUE);
   swfdec_as_stack_pop (cx);
 }
@@ -2067,7 +2067,7 @@ swfdec_action_delete (SwfdecAsContext *cx, guint action, const guint8 *data, gui
   const char *name;
   gboolean success = FALSE;
   
-  name = swfdec_as_value_to_string (cx, swfdec_as_stack_peek (cx, 1));
+  name = swfdec_as_value_to_string (cx, *swfdec_as_stack_peek (cx, 1));
   val = swfdec_as_stack_peek (cx, 2);
   if (SWFDEC_AS_VALUE_IS_COMPOSITE (val)) {
     SwfdecAsObject *o = SWFDEC_AS_VALUE_GET_COMPOSITE (val);
@@ -2086,7 +2086,7 @@ swfdec_action_delete2 (SwfdecAsContext *cx, guint action, const guint8 *data, gu
   gboolean success = FALSE;
   
   val = swfdec_as_stack_peek (cx, 1);
-  name = swfdec_as_value_to_string (cx, val);
+  name = swfdec_as_value_to_string (cx, *val);
   success = swfdec_as_frame_delete_variable (cx, cx->frame, name) == SWFDEC_AS_DELETE_DELETED;
   SWFDEC_AS_VALUE_SET_BOOLEAN (val, success);
 }
@@ -2143,7 +2143,7 @@ static void
 swfdec_action_to_string (SwfdecAsContext *cx, guint action, const guint8 *data, guint len)
 {
   SWFDEC_AS_VALUE_SET_STRING (swfdec_as_stack_peek (cx, 1),
-      swfdec_as_value_to_string (cx, swfdec_as_stack_peek (cx, 1)));
+      swfdec_as_value_to_string (cx, *swfdec_as_stack_peek (cx, 1)));
 }
 
 static void
@@ -2482,7 +2482,7 @@ static void
 swfdec_action_char_to_ascii (SwfdecAsContext *cx, guint action, const guint8 *data, guint len)
 {
   SwfdecAsValue *val = swfdec_as_stack_peek (cx, 1);
-  const char *s = swfdec_as_value_to_string (cx, val);
+  const char *s = swfdec_as_value_to_string (cx, *val);
 
   if (cx->version <= 5) {
     char *ascii = g_convert (s, -1, "LATIN1", "UTF-8", NULL, NULL, NULL);
@@ -2804,7 +2804,7 @@ swfdec_action_clone_sprite (SwfdecAsContext *cx, guint action, const guint8 *dat
   int depth;
 
   depth = swfdec_as_value_to_integer (cx, swfdec_as_stack_peek (cx, 1)) - 16384;
-  new_name = swfdec_as_value_to_string (cx, swfdec_as_stack_peek (cx, 2));
+  new_name = swfdec_as_value_to_string (cx, *swfdec_as_stack_peek (cx, 2));
   if (target == NULL) {
     SWFDEC_FIXME ("target is not a movie in CloneSprite");
   } else if (!SWFDEC_IS_PLAYER (cx)) {
diff --git a/swfdec/swfdec_as_native_function.c b/swfdec/swfdec_as_native_function.c
index 89d6908..cd91597 100644
--- a/swfdec/swfdec_as_native_function.c
+++ b/swfdec/swfdec_as_native_function.c
@@ -358,7 +358,7 @@ swfdec_as_native_function_checkv (SwfdecAsContext *cx, SwfdecAsObject *object,
       case 's':
 	{
 	  const char **s = va_arg (varargs, const char **);
-	  *s = swfdec_as_value_to_string (cx, &argv[i]);
+	  *s = swfdec_as_value_to_string (cx, argv[i]);
 	}
 	break;
       case 'o':
diff --git a/swfdec/swfdec_as_number.c b/swfdec/swfdec_as_number.c
index d5ffddd..fae652f 100644
--- a/swfdec/swfdec_as_number.c
+++ b/swfdec/swfdec_as_number.c
@@ -127,7 +127,7 @@ swfdec_as_number_toString (SwfdecAsContext *cx, SwfdecAsObject *object,
   if (radix == 10 || radix < 2 || radix > 36 || isinf (num->number) ||
       isnan (num->number)) {
     swfdec_as_value_set_number (cx, &val, num->number);
-    s = swfdec_as_value_to_string (cx, &val);
+    s = swfdec_as_value_to_string (cx, val);
   } else {
     s = swfdec_as_number_toStringRadix (cx, num->number, radix);
   }
diff --git a/swfdec/swfdec_as_object.c b/swfdec/swfdec_as_object.c
index 210e03a..e6a7ed4 100644
--- a/swfdec/swfdec_as_object.c
+++ b/swfdec/swfdec_as_object.c
@@ -1439,7 +1439,7 @@ swfdec_as_object_addProperty (SwfdecAsContext *cx, SwfdecAsObject *object,
   SWFDEC_AS_VALUE_SET_BOOLEAN (retval, FALSE);
   if (argc < 3)
     return;
-  name = swfdec_as_value_to_string (cx, &argv[0]);
+  name = swfdec_as_value_to_string (cx, argv[0]);
   if (!SWFDEC_AS_VALUE_IS_OBJECT (&argv[1]) ||
       !SWFDEC_IS_AS_FUNCTION ((get = (SwfdecAsFunction *) (SWFDEC_AS_VALUE_GET_OBJECT (&argv[1])->relay))))
     return;
@@ -1469,12 +1469,7 @@ swfdec_as_object_hasOwnProperty (SwfdecAsContext *cx, SwfdecAsObject *object,
     return;
 
   SWFDEC_AS_VALUE_SET_BOOLEAN (retval, FALSE);
-
-  // return false even if no params
-  if (argc < 1)
-    return;
-
-  name = swfdec_as_value_to_string (cx, &argv[0]);
+  SWFDEC_AS_CHECK (0, NULL, "s", &name);
 
   if (!(var = swfdec_as_object_hash_lookup (object, name)))
     return;
@@ -1499,12 +1494,7 @@ swfdec_as_object_isPropertyEnumerable (SwfdecAsContext *cx,
     return;
 
   SWFDEC_AS_VALUE_SET_BOOLEAN (retval, FALSE);
-
-  // return false even if no params
-  if (argc < 1)
-    return;
-
-  name = swfdec_as_value_to_string (cx, &argv[0]);
+  SWFDEC_AS_CHECK (0, NULL, "s", &name);
 
   if (!(var = swfdec_as_object_hash_lookup (object, name)))
     return;
@@ -1549,20 +1539,16 @@ swfdec_as_object_watch (SwfdecAsContext *cx, SwfdecAsObject *object,
     guint argc, SwfdecAsValue *argv, SwfdecAsValue *retval)
 {
   SwfdecAsWatch *watch;
+  SwfdecAsObject *o;
+  SwfdecAsFunction *fun;
   const char *name;
 
   SWFDEC_AS_VALUE_SET_BOOLEAN (retval, FALSE);
+  SWFDEC_AS_CHECK (0, NULL, "so", &name, &o);
 
-  if (argc < 2)
-    return;
-
-  name = swfdec_as_value_to_string (cx, &argv[0]);
-
-  if (!SWFDEC_AS_VALUE_IS_OBJECT (&argv[1]))
-    return;
-
-  if (!SWFDEC_IS_AS_FUNCTION (SWFDEC_AS_VALUE_GET_OBJECT (&argv[1])->relay))
+  if (!SWFDEC_IS_AS_FUNCTION (o->relay))
     return;
+  fun = SWFDEC_AS_FUNCTION (o->relay);
 
   if (object->watches == NULL) {
     object->watches = g_hash_table_new_full (g_direct_hash, g_direct_equal, 
@@ -1572,12 +1558,10 @@ swfdec_as_object_watch (SwfdecAsContext *cx, SwfdecAsObject *object,
     watch = g_hash_table_lookup (object->watches, name);
   }
   if (watch == NULL) {
-    watch = swfdec_as_watch_new (SWFDEC_AS_FUNCTION (SWFDEC_AS_VALUE_GET_OBJECT (&argv[1])->relay));
-    if (watch == NULL)
-      return;
+    watch = swfdec_as_watch_new (fun);
     g_hash_table_insert (object->watches, (char *) name, watch);
   } else {
-    watch->watch = SWFDEC_AS_FUNCTION (SWFDEC_AS_VALUE_GET_OBJECT (&argv[1])->relay);
+    watch->watch = fun;
   }
 
   if (argc >= 3) {
@@ -1601,11 +1585,7 @@ swfdec_as_object_unwatch (SwfdecAsContext *cx, SwfdecAsObject *object,
     return;
 
   SWFDEC_AS_VALUE_SET_BOOLEAN (retval, FALSE);
-
-  if (argc < 1)
-    return;
-
-  name = swfdec_as_value_to_string (cx, &argv[0]);
+  SWFDEC_AS_CHECK (0, NULL, "s", &name);
 
   // special case: can't unwatch native properties
   if ((var = swfdec_as_object_hash_lookup (object, name))&& var->get != NULL)
diff --git a/swfdec/swfdec_as_string.c b/swfdec/swfdec_as_string.c
index c87d32b..a5ea24a 100644
--- a/swfdec/swfdec_as_string.c
+++ b/swfdec/swfdec_as_string.c
@@ -64,7 +64,7 @@ swfdec_as_string_init (SwfdecAsString *string)
   if (object) {\
     SwfdecAsValue _tmp; \
     SWFDEC_AS_VALUE_SET_COMPOSITE (&_tmp, object); \
-    *(result) = swfdec_as_value_to_string (cx, &_tmp);\
+    *(result) = swfdec_as_value_to_string (cx, _tmp);\
   } else {\
     *(result) = SWFDEC_AS_STR_undefined; \
   }\
@@ -282,7 +282,7 @@ swfdec_as_string_construct (SwfdecAsContext *cx, SwfdecAsObject *object,
   const char *s;
 
   if (argc > 0) {
-    s = swfdec_as_value_to_string (cx, &argv[0]);
+    s = swfdec_as_value_to_string (cx, argv[0]);
   } else {
     s = SWFDEC_AS_STR_EMPTY;
   }
@@ -345,7 +345,7 @@ swfdec_as_string_split_5 (SwfdecAsContext *cx, SwfdecAsObject *object,
   if (argc < 1 || SWFDEC_AS_VALUE_IS_UNDEFINED (&argv[0])) {
     delim = SWFDEC_AS_STR_COMMA;
   } else {
-    delim = swfdec_as_value_to_string (cx, &argv[0]);
+    delim = swfdec_as_value_to_string (cx, argv[0]);
   }
   if (delim == SWFDEC_AS_STR_EMPTY) {
     SWFDEC_AS_VALUE_SET_STRING (&val, str);
@@ -353,7 +353,7 @@ swfdec_as_string_split_5 (SwfdecAsContext *cx, SwfdecAsObject *object,
     return;
   }
   if (argc > 1 && !SWFDEC_AS_VALUE_IS_UNDEFINED (&argv[1])) {
-    swfdec_as_value_to_string (cx, &argv[0]);
+    swfdec_as_value_to_string (cx, argv[0]);
     count = swfdec_as_value_to_integer (cx, &argv[1]);
   } else {
     count = G_MAXINT;
@@ -399,7 +399,7 @@ swfdec_as_string_split_6 (SwfdecAsContext *cx, SwfdecAsObject *object,
     swfdec_as_array_push (arr, &val);
     return;
   }
-  delim = swfdec_as_value_to_string (cx, &argv[0]);
+  delim = swfdec_as_value_to_string (cx, argv[0]);
   if (str == SWFDEC_AS_STR_EMPTY) {
     if (strlen (delim) > 0) {
       SWFDEC_AS_VALUE_SET_STRING (&val, str);
@@ -490,7 +490,7 @@ swfdec_as_string_concat (SwfdecAsContext *cx, SwfdecAsObject *object,
   string = g_string_new (s);
 
   for (i = 0; i < argc; i++) {
-    string = g_string_append (string, swfdec_as_value_to_string (cx, &argv[i]));
+    string = g_string_append (string, swfdec_as_value_to_string (cx, argv[i]));
   }
 
   SWFDEC_AS_VALUE_SET_STRING (ret,
diff --git a/swfdec/swfdec_as_types.c b/swfdec/swfdec_as_types.c
index 10f0d93..62551e9 100644
--- a/swfdec/swfdec_as_types.c
+++ b/swfdec/swfdec_as_types.c
@@ -382,27 +382,27 @@ swfdec_as_double_to_string (SwfdecAsContext *context, double d)
  *          never be %NULL.
  **/
 const char *
-swfdec_as_value_to_string (SwfdecAsContext *context, const SwfdecAsValue *value)
+swfdec_as_value_to_string (SwfdecAsContext *context, SwfdecAsValue value)
 {
   g_return_val_if_fail (SWFDEC_IS_AS_CONTEXT (context), SWFDEC_AS_STR_EMPTY);
 
-  switch (SWFDEC_AS_VALUE_GET_TYPE (value)) {
+  switch (SWFDEC_AS_VALUE_GET_TYPE (&value)) {
     case SWFDEC_AS_TYPE_STRING:
-      return SWFDEC_AS_VALUE_GET_STRING (value);
+      return SWFDEC_AS_VALUE_GET_STRING (&value);
     case SWFDEC_AS_TYPE_UNDEFINED:
       if (context->version > 6)
 	return SWFDEC_AS_STR_undefined;
       else
 	return SWFDEC_AS_STR_EMPTY;
     case SWFDEC_AS_TYPE_BOOLEAN:
-      return SWFDEC_AS_VALUE_GET_BOOLEAN (value) ? SWFDEC_AS_STR_true : SWFDEC_AS_STR_false;
+      return SWFDEC_AS_VALUE_GET_BOOLEAN (&value) ? SWFDEC_AS_STR_true : SWFDEC_AS_STR_false;
     case SWFDEC_AS_TYPE_NULL:
       return SWFDEC_AS_STR_null;
     case SWFDEC_AS_TYPE_NUMBER:
-      return swfdec_as_double_to_string (context, SWFDEC_AS_VALUE_GET_NUMBER (value));
+      return swfdec_as_double_to_string (context, SWFDEC_AS_VALUE_GET_NUMBER (&value));
     case SWFDEC_AS_TYPE_OBJECT:
       {
-	SwfdecAsObject *object = SWFDEC_AS_VALUE_GET_OBJECT (value);
+	SwfdecAsObject *object = SWFDEC_AS_VALUE_GET_OBJECT (&value);
 	if (SWFDEC_IS_AS_STRING (object->relay)) {
 	  return SWFDEC_AS_STRING (object->relay)->string;
 	} else {
@@ -420,7 +420,7 @@ swfdec_as_value_to_string (SwfdecAsContext *context, const SwfdecAsValue *value)
       }
     case SWFDEC_AS_TYPE_MOVIE:
       {
-	SwfdecMovie *movie = SWFDEC_AS_VALUE_GET_MOVIE (value);
+	SwfdecMovie *movie = SWFDEC_AS_VALUE_GET_MOVIE (&value);
 	char *str;
 
 	if (movie == NULL)
diff --git a/swfdec/swfdec_as_types.h b/swfdec/swfdec_as_types.h
index 76d59f1..50472b8 100644
--- a/swfdec/swfdec_as_types.h
+++ b/swfdec/swfdec_as_types.h
@@ -127,7 +127,7 @@ SwfdecAsObject *swfdec_as_value_to_object	(SwfdecAsContext *	context,
 						 const SwfdecAsValue *	value);
 void		swfdec_as_value_to_primitive	(SwfdecAsValue *	value);
 const char *	swfdec_as_value_to_string	(SwfdecAsContext *	context,
-						 const SwfdecAsValue *	value);
+						 SwfdecAsValue		value);
 
 /* special conversion functions */
 const char *	swfdec_as_integer_to_string	(SwfdecAsContext *      context,
diff --git a/swfdec/swfdec_asbroadcaster.c b/swfdec/swfdec_asbroadcaster.c
index 091376a..734d7e6 100644
--- a/swfdec/swfdec_asbroadcaster.c
+++ b/swfdec/swfdec_asbroadcaster.c
@@ -46,7 +46,7 @@ broadcastMessage (SwfdecAsContext *cx, SwfdecAsObject *object,
 
   if (argc < 1)
     return;
-  name = swfdec_as_value_to_string (cx, &argv[0]);
+  name = swfdec_as_value_to_string (cx, argv[0]);
   argv += 1;
   argc--;
 
diff --git a/swfdec/swfdec_external_interface.c b/swfdec/swfdec_external_interface.c
index b760df8..af7a008 100644
--- a/swfdec/swfdec_external_interface.c
+++ b/swfdec/swfdec_external_interface.c
@@ -94,9 +94,10 @@ swfdec_external_interface__evalJS (SwfdecAsContext *cx, SwfdecAsObject *object,
   const char *s;
   
   SWFDEC_AS_VALUE_SET_NULL (ret);
-  if (scripting == NULL || argc == 0)
+  SWFDEC_AS_CHECK (0, NULL, "s", &s);
+  if (scripting == NULL)
     return;
-  s = swfdec_as_value_to_string (cx, &argv[0]);
+
   klass = SWFDEC_PLAYER_SCRIPTING_GET_CLASS (scripting);
   if (klass->js_call) {
     char *t = klass->js_call (scripting, player, s);
@@ -118,9 +119,9 @@ swfdec_external_interface__callOut (SwfdecAsContext *cx,
   const char *s;
   
   SWFDEC_AS_VALUE_SET_NULL (ret);
-  if (scripting == NULL || argc == 0)
+  SWFDEC_AS_CHECK (0, NULL, "s", &s);
+  if (scripting == NULL)
     return;
-  s = swfdec_as_value_to_string (cx, &argv[0]);
   klass = SWFDEC_PLAYER_SCRIPTING_GET_CLASS (scripting);
   if (klass->xml_call) {
     char *t = klass->xml_call (scripting, player, s);
@@ -138,11 +139,10 @@ swfdec_external_interface__escapeXML (SwfdecAsContext *cx,
 {
   const char *s;
 
-  if (argc == 0 ||
-      (s = swfdec_as_value_to_string (cx, &argv[0])) == SWFDEC_AS_STR_EMPTY) {
-    SWFDEC_AS_VALUE_SET_NULL (ret);
+  SWFDEC_AS_VALUE_SET_NULL (ret);
+  SWFDEC_AS_CHECK (0, NULL, "s", &s);
+  if (s == SWFDEC_AS_STR_EMPTY)
     return;
-  }
 
   SWFDEC_AS_VALUE_SET_STRING (ret, swfdec_as_context_give_string (cx, swfdec_xml_escape (s)));
 }
@@ -155,11 +155,10 @@ swfdec_external_interface__unescapeXML (SwfdecAsContext *cx,
 {
   const char *s;
 
-  if (argc == 0 ||
-      (s = swfdec_as_value_to_string (cx, &argv[0])) == SWFDEC_AS_STR_EMPTY) {
-    SWFDEC_AS_VALUE_SET_NULL (ret);
+  SWFDEC_AS_VALUE_SET_NULL (ret);
+  SWFDEC_AS_CHECK (0, NULL, "s", &s);
+  if (s == SWFDEC_AS_STR_EMPTY)
     return;
-  }
 
   SWFDEC_AS_VALUE_SET_STRING (ret, swfdec_as_context_give_string (cx, 
 	swfdec_xml_unescape_len (cx, s, strlen (s), FALSE)));
@@ -175,11 +174,10 @@ swfdec_external_interface__jsQuoteString (SwfdecAsContext *cx,
   GString *str;
   size_t len;
 
-  if (argc == 0 ||
-      (s = swfdec_as_value_to_string (cx, &argv[0])) == SWFDEC_AS_STR_EMPTY) {
-    SWFDEC_AS_VALUE_SET_NULL (ret);
+  SWFDEC_AS_VALUE_SET_NULL (ret);
+  SWFDEC_AS_CHECK (0, NULL, "s", &s);
+  if (s == SWFDEC_AS_STR_EMPTY)
     return;
-  }
 
   str = g_string_new ("");
   do {
diff --git a/swfdec/swfdec_load_object_as.c b/swfdec/swfdec_load_object_as.c
index 2c55cac..d69db11 100644
--- a/swfdec/swfdec_load_object_as.c
+++ b/swfdec/swfdec_load_object_as.c
@@ -134,7 +134,7 @@ swfdec_load_object_as_get_headers (SwfdecAsObject *object, guint *header_count,
   {
     g_ptr_array_add (array_names, g_strdup (SWFDEC_AS_STR_Content_Type));
     g_ptr_array_add (array_values,
-	g_strdup (swfdec_as_value_to_string (cx, &val)));
+	g_strdup (swfdec_as_value_to_string (cx, val)));
   }
 
   if (!swfdec_as_object_get_variable (object, SWFDEC_AS_STR__customHeaders,
@@ -155,9 +155,9 @@ swfdec_load_object_as_get_headers (SwfdecAsObject *object, guint *header_count,
     swfdec_as_object_get_variable (list, swfdec_as_integer_to_string (cx, i),
 	&val);
     if (name == NULL) {
-      name = swfdec_as_value_to_string (cx, &val);
+      name = swfdec_as_value_to_string (cx, val);
     } else {
-      const char *value = swfdec_as_value_to_string (cx, &val);
+      const char *value = swfdec_as_value_to_string (cx, val);
       for (j = 0; j < G_N_ELEMENTS (disallowed_names); j++) {
 	if (g_ascii_strcasecmp (name, disallowed_names[j]) == 0)
 	  break;
@@ -206,7 +206,7 @@ swfdec_load_object_as_send (SwfdecAsContext *cx, SwfdecAsObject *object,
     return;
 
   SWFDEC_AS_VALUE_SET_COMPOSITE (&val, object);
-  data = swfdec_as_value_to_string (cx, &val);
+  data = swfdec_as_value_to_string (cx, val);
 
   if (method == NULL || g_ascii_strcasecmp (method, "GET") == 0) {
     url = swfdec_as_context_give_string (cx,
@@ -244,7 +244,7 @@ swfdec_load_object_as_sendAndLoad (SwfdecAsContext *cx, SwfdecAsObject *object,
     return;
 
   SWFDEC_AS_VALUE_SET_COMPOSITE (&val, object);
-  data = swfdec_as_value_to_string (cx, &val);
+  data = swfdec_as_value_to_string (cx, val);
 
   if (method != NULL && g_ascii_strcasecmp (method, "GET") == 0) {
     url = swfdec_as_context_give_string (cx,
diff --git a/swfdec/swfdec_loadvars_as.c b/swfdec/swfdec_loadvars_as.c
index 75febf7..b242a98 100644
--- a/swfdec/swfdec_loadvars_as.c
+++ b/swfdec/swfdec_loadvars_as.c
@@ -47,5 +47,5 @@ swfdec_loadvars_decode (SwfdecAsContext *cx, SwfdecAsObject *obj,
     return;
   }
 
-  swfdec_as_object_decode (obj, swfdec_as_value_to_string (cx, &argv[0]));
+  swfdec_as_object_decode (obj, swfdec_as_value_to_string (cx, argv[0]));
 }
diff --git a/swfdec/swfdec_movie_as_drawing.c b/swfdec/swfdec_movie_as_drawing.c
index a1b69b1..681eb9f 100644
--- a/swfdec/swfdec_movie_as_drawing.c
+++ b/swfdec/swfdec_movie_as_drawing.c
@@ -131,7 +131,7 @@ swfdec_sprite_movie_extract_matrix (SwfdecAsObject *o, cairo_matrix_t *mat)
 
   /* FIXME: This function does not call valueOf in the right order */
   if (swfdec_as_object_get_variable (o, SWFDEC_AS_STR_matrixType, &val)) {
-    const char *s = swfdec_as_value_to_string (cx, &val);
+    const char *s = swfdec_as_value_to_string (cx, val);
     cairo_matrix_init_translate (mat, SWFDEC_TWIPS_SCALE_FACTOR / 2.0, SWFDEC_TWIPS_SCALE_FACTOR / 2.0);
     cairo_matrix_scale (mat, SWFDEC_TWIPS_SCALE_FACTOR / 32768.0, SWFDEC_TWIPS_SCALE_FACTOR / 32768.0);
     if (s == SWFDEC_AS_STR_box) {
diff --git a/swfdec/swfdec_movie_asprops.c b/swfdec/swfdec_movie_asprops.c
index 2009e85..5a64766 100644
--- a/swfdec/swfdec_movie_asprops.c
+++ b/swfdec/swfdec_movie_asprops.c
@@ -144,7 +144,7 @@ mc_name_get (SwfdecMovie *movie, SwfdecAsValue *rval)
 static void
 mc_name_set (SwfdecMovie *movie, const SwfdecAsValue *val)
 {
-  movie->name = 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
diff --git a/swfdec/swfdec_player_as.c b/swfdec/swfdec_player_as.c
index d8f01a1..8610c68 100644
--- a/swfdec/swfdec_player_as.c
+++ b/swfdec/swfdec_player_as.c
@@ -70,7 +70,7 @@ swfdec_player_do_set_interval (gboolean repeat, SwfdecAsContext *cx, guint argc,
       SWFDEC_WARNING ("setInterval needs 3 arguments when not called with function");
       return;
     }
-    name = swfdec_as_value_to_string (cx, &argv[1]);
+    name = swfdec_as_value_to_string (cx, argv[1]);
     msecs = swfdec_as_value_to_integer (cx, &argv[2]);
     if (msecs < MIN_INTERVAL_TIME) {
       SWFDEC_INFO ("interval duration is %u, making it %u msecs", msecs, MIN_INTERVAL_TIME);
diff --git a/swfdec/swfdec_resource.c b/swfdec/swfdec_resource.c
index 3670a5b..0f1619f 100644
--- a/swfdec/swfdec_resource.c
+++ b/swfdec/swfdec_resource.c
@@ -636,7 +636,7 @@ swfdec_resource_load_request (gpointer loadp, gpointer playerp)
   /* fscommand? */
   if (g_ascii_strncasecmp (load->url, "FSCommand:", 10) == 0) {
     char *command = load->url + 10;
-    const char *target = swfdec_as_value_to_string (SWFDEC_AS_CONTEXT (player), &load->target);
+    const char *target = swfdec_as_value_to_string (SWFDEC_AS_CONTEXT (player), load->target);
     if (SWFDEC_AS_VALUE_IS_MOVIE (&load->target)) {
       SWFDEC_FIXME ("Adobe 9.0.124.0 and later don't emit fscommands here. "
 	  "We just do for compatibility reasons with the testsuite.");
@@ -710,13 +710,13 @@ swfdec_resource_load_movie (SwfdecPlayer *player, const SwfdecAsValue *target,
       swfdec_resource_load_internal (player, &val, url, buffer, loader);
       return TRUE;
     } else if (SWFDEC_AS_VALUE_IS_STRING (target) || SWFDEC_AS_VALUE_IS_MOVIE(target)) {
-      s = swfdec_as_value_to_string (SWFDEC_AS_CONTEXT (player), target);
+      s = swfdec_as_value_to_string (SWFDEC_AS_CONTEXT (player), *target);
     } else {
       SWFDEC_WARNING ("target does not reference a movie, not loading %s", url);
       return FALSE;
     }
   } else {
-    s = swfdec_as_value_to_string (SWFDEC_AS_CONTEXT (player), target);
+    s = swfdec_as_value_to_string (SWFDEC_AS_CONTEXT (player), *target);
   }
   if (swfdec_player_get_level (player, s, SWFDEC_AS_CONTEXT (player)->version) >= 0) {
     /* lowercase the string, so we can do case insensitive level lookups later on */
diff --git a/swfdec/swfdec_sound_object.c b/swfdec/swfdec_sound_object.c
index ac553da..ef539ef 100644
--- a/swfdec/swfdec_sound_object.c
+++ b/swfdec/swfdec_sound_object.c
@@ -454,7 +454,7 @@ swfdec_sound_object_construct (SwfdecAsContext *cx, SwfdecAsObject *object, guin
   if (argc == 0 || SWFDEC_AS_VALUE_IS_UNDEFINED (&argv[0])) {
     sound->target = NULL;
   } else {
-    sound->target = swfdec_as_value_to_string (cx, &argv[0]);
+    sound->target = swfdec_as_value_to_string (cx, argv[0]);
   }
 
   SWFDEC_AS_VALUE_SET_OBJECT (ret, object);
diff --git a/swfdec/swfdec_stage_as.c b/swfdec/swfdec_stage_as.c
index 444c0a3..80f1548 100644
--- a/swfdec/swfdec_stage_as.c
+++ b/swfdec/swfdec_stage_as.c
@@ -65,9 +65,8 @@ set_scaleMode (SwfdecAsContext *cx, SwfdecAsObject *object,
   const char *s;
   SwfdecScaleMode mode;
 
-  if (argc == 0)
-    return;
-  s = swfdec_as_value_to_string (cx, &argv[0]);
+  SWFDEC_AS_CHECK (0, NULL, "s", &s);
+
   if (g_ascii_strcasecmp (s, SWFDEC_AS_STR_noBorder) == 0) {
     mode = SWFDEC_SCALE_NO_BORDER;
   } else if (g_ascii_strcasecmp (s, SWFDEC_AS_STR_exactFit) == 0) {
@@ -111,10 +110,8 @@ set_align (SwfdecAsContext *cx, SwfdecAsObject *object,
   guint flags = 0;
   const char *s;
 
-  if (argc == 0)
-    return;
+  SWFDEC_AS_CHECK (0, NULL, "s", &s);
 
-  s = swfdec_as_value_to_string (cx, &argv[0]);
   if (strchr (s, 'l') || strchr (s, 'L'))
     flags |= SWFDEC_ALIGN_FLAG_LEFT;
   if (strchr (s, 't') || strchr (s, 'T'))
diff --git a/swfdec/swfdec_text_field_movie.c b/swfdec/swfdec_text_field_movie.c
index 83eb6ce..572546c 100644
--- a/swfdec/swfdec_text_field_movie.c
+++ b/swfdec/swfdec_text_field_movie.c
@@ -1035,7 +1035,7 @@ swfdec_text_field_movie_variable_listener_callback (gpointer data,
   SwfdecTextFieldMovie *text = SWFDEC_TEXT_FIELD_MOVIE (data);
 
   swfdec_text_field_movie_set_text (text,
-      swfdec_as_value_to_string (swfdec_gc_object_get_context (text), val), text->html);
+      swfdec_as_value_to_string (swfdec_gc_object_get_context (text), *val), text->html);
 }
 
 void
@@ -1065,7 +1065,7 @@ swfdec_text_field_movie_set_listen_variable (SwfdecTextFieldMovie *text,
 	&name);
     if (object != NULL && swfdec_as_object_get_variable (object, name, &val)) {
       swfdec_text_field_movie_set_text (text,
-	  swfdec_as_value_to_string (swfdec_gc_object_get_context (text), &val),
+	  swfdec_as_value_to_string (swfdec_gc_object_get_context (text), val),
 	  text->html);
     } else if (text_field != NULL && text_field->input != NULL) {
       // Set to the original value from the tag, not current value
diff --git a/swfdec/swfdec_text_field_movie_as.c b/swfdec/swfdec_text_field_movie_as.c
index 1ccae45..f4c7a71 100644
--- a/swfdec/swfdec_text_field_movie_as.c
+++ b/swfdec/swfdec_text_field_movie_as.c
@@ -760,7 +760,7 @@ swfdec_text_field_movie_set_autoSize (SwfdecAsContext *cx,
     }
   } else {
     swfdec_as_value_to_number (cx, &argv[0]);
-    s = swfdec_as_value_to_string (cx, &argv[0]);
+    s = swfdec_as_value_to_string (cx, argv[0]);
 
     if (!g_ascii_strcasecmp (s, "left")) {
       text->auto_size = SWFDEC_AUTO_SIZE_LEFT;
diff --git a/swfdec/swfdec_text_format.c b/swfdec/swfdec_text_format.c
index 4a0e63e..b7bc75b 100644
--- a/swfdec/swfdec_text_format.c
+++ b/swfdec/swfdec_text_format.c
@@ -138,7 +138,7 @@ swfdec_text_format_set_string (SwfdecAsObject *object,
   context = swfdec_gc_object_get_context (format);
   swfdec_as_value_to_integer (context, &argv[0]);
   swfdec_as_value_to_number (context, &argv[0]);
-  s = swfdec_as_value_to_string (context, &argv[0]);
+  s = swfdec_as_value_to_string (context, argv[0]);
 
   if (SWFDEC_AS_VALUE_IS_UNDEFINED (&argv[0]) ||
       SWFDEC_AS_VALUE_IS_NULL (&argv[0])) {
@@ -190,7 +190,7 @@ swfdec_text_format_set_boolean (SwfdecAsObject *object,
   context = swfdec_gc_object_get_context (format);
   swfdec_as_value_to_integer (context, &argv[0]);
   swfdec_as_value_to_number (context, &argv[0]);
-  swfdec_as_value_to_string (context, &argv[0]);
+  swfdec_as_value_to_string (context, argv[0]);
 
   if (SWFDEC_AS_VALUE_IS_UNDEFINED (&argv[0]) ||
       SWFDEC_AS_VALUE_IS_NULL (&argv[0])) {
@@ -230,7 +230,7 @@ swfdec_text_format_value_to_integer (SwfdecAsContext *cx, SwfdecAsValue *val,
 
   n = swfdec_as_value_to_integer (cx, val);
   d = swfdec_as_value_to_number (cx, val);
-  swfdec_as_value_to_string (cx, val);
+  swfdec_as_value_to_string (cx, *val);
 
   if (cx->version >= 8) {
     if (isnan (d))
@@ -335,7 +335,7 @@ swfdec_text_format_do_set_align (SwfdecAsContext *cx, SwfdecAsObject *object,
 
   swfdec_as_value_to_integer (cx, &argv[0]);
   swfdec_as_value_to_number (cx, &argv[0]);
-  s = swfdec_as_value_to_string (cx, &argv[0]);
+  s = swfdec_as_value_to_string (cx, argv[0]);
 
   if (!g_ascii_strcasecmp (s, "left")) {
     format->attr.align = SWFDEC_TEXT_ALIGN_LEFT;
@@ -434,7 +434,7 @@ swfdec_text_format_do_set_color (SwfdecAsContext *cx, SwfdecAsObject *object,
   } else {
     format->attr.color = (unsigned) swfdec_as_value_to_integer (cx, &argv[0]);
     swfdec_as_value_to_integer (cx, &argv[0]);
-    swfdec_as_value_to_string (cx, &argv[0]);
+    swfdec_as_value_to_string (cx, argv[0]);
 
     SWFDEC_TEXT_ATTRIBUTE_SET (format->values_set, SWFDEC_TEXT_ATTRIBUTE_COLOR);
   }
@@ -484,8 +484,8 @@ swfdec_text_format_do_set_display (SwfdecAsContext *cx, SwfdecAsObject *object,
 
   swfdec_as_value_to_integer (cx, &argv[0]);
   swfdec_as_value_to_number (cx, &argv[0]);
-  swfdec_as_value_to_string (cx, &argv[0]);
-  s = swfdec_as_value_to_string (cx, &argv[0]); // oh yes, let's call it twice
+  swfdec_as_value_to_string (cx, argv[0]);
+  s = swfdec_as_value_to_string (cx, argv[0]); // oh yes, let's call it twice
 
   if (!g_ascii_strcasecmp (s, "none")) {
     format->attr.display = SWFDEC_TEXT_DISPLAY_NONE;
@@ -622,7 +622,7 @@ swfdec_text_format_do_set_letter_spacing (SwfdecAsContext *cx,
 
   swfdec_as_value_to_integer (cx, &argv[0]);
   d = swfdec_as_value_to_number (cx, &argv[0]);
-  swfdec_as_value_to_string (cx, &argv[0]);
+  swfdec_as_value_to_string (cx, argv[0]);
 
   if (SWFDEC_AS_VALUE_IS_UNDEFINED (&argv[0]) ||
       SWFDEC_AS_VALUE_IS_NULL (&argv[0]))
@@ -712,7 +712,7 @@ swfdec_text_format_do_set_tab_stops (SwfdecAsContext *cx,
 
   swfdec_as_value_to_integer (cx, &argv[0]);
   swfdec_as_value_to_number (cx, &argv[0]);
-  swfdec_as_value_to_string (cx, &argv[0]);
+  swfdec_as_value_to_string (cx, argv[0]);
 
   if (SWFDEC_AS_VALUE_IS_UNDEFINED (&argv[0]) ||
       SWFDEC_AS_VALUE_IS_NULL (&argv[0]))
diff --git a/swfdec/swfdec_xml.c b/swfdec/swfdec_xml.c
index f5503a6..1a5658b 100644
--- a/swfdec/swfdec_xml.c
+++ b/swfdec/swfdec_xml.c
@@ -897,8 +897,7 @@ swfdec_xml_construct (SwfdecAsContext *cx, SwfdecAsObject *object,
     return;
 
   if (argc >= 1 && !SWFDEC_AS_VALUE_IS_UNDEFINED (&argv[0])) {
-    swfdec_xml_parseXML (xml,
-	swfdec_as_value_to_string (cx, &argv[0]));
+    swfdec_xml_parseXML (xml, swfdec_as_value_to_string (cx, argv[0]));
   }
 }
 
diff --git a/swfdec/swfdec_xml_node.c b/swfdec/swfdec_xml_node.c
index db3ea9b..5dddc62 100644
--- a/swfdec/swfdec_xml_node.c
+++ b/swfdec/swfdec_xml_node.c
@@ -154,7 +154,7 @@ swfdec_xml_node_get_attribute (SwfdecXmlNode *node, const char *name)
   g_return_val_if_fail (name != NULL, NULL);
 
   if (swfdec_as_object_get_variable (node->attributes, name, &val)) {
-    return swfdec_as_value_to_string (swfdec_gc_object_get_context (node), &val);
+    return swfdec_as_value_to_string (swfdec_gc_object_get_context (node), val);
   } else {
     return NULL;
   }
@@ -179,7 +179,7 @@ swfdec_xml_node_getNamespaceForPrefix (SwfdecXmlNode *node, const char *prefix)
   do {
     swfdec_as_object_get_variable (node->attributes, var, &val);
     if (!SWFDEC_AS_VALUE_IS_UNDEFINED (&val)) {
-      return swfdec_as_value_to_string (swfdec_gc_object_get_context (node), &val);
+      return swfdec_as_value_to_string (swfdec_gc_object_get_context (node), val);
     }
     node = node->parent;
   } while (node != NULL);
@@ -210,7 +210,7 @@ swfdec_xml_node_foreach_find_namespace (SwfdecAsObject *object,
     return TRUE;
 
   // ok, now check if the uri is the one we are searching for
-  uri = swfdec_as_value_to_string (object->context, value);
+  uri = swfdec_as_value_to_string (object->context, *value);
   if (!g_ascii_strcasecmp (uri, fdata->namespace)) {
     fdata->variable = variable;
     return FALSE;
@@ -892,7 +892,7 @@ swfdec_xml_node_foreach_string_append_attribute (SwfdecAsObject *object,
   string = g_string_append (string, variable);
   string = g_string_append (string, "=\"");
   escaped =
-    swfdec_xml_escape (swfdec_as_value_to_string (object->context, value));
+    swfdec_xml_escape (swfdec_as_value_to_string (object->context, *value));
   string = g_string_append (string, escaped);
   g_free (escaped);
   string = g_string_append (string, "\"");
diff --git a/test/swfdec_test.c b/test/swfdec_test.c
index f7a499b..74c0a8e 100644
--- a/test/swfdec_test.c
+++ b/test/swfdec_test.c
@@ -214,7 +214,7 @@ main (int argc, char **argv)
     swfdec_as_context_get_string (context, "filenames"), &val);
   swfdec_as_object_run (context->global, script);
   if (swfdec_as_context_catch (context, &val)) {
-    g_print ("ERROR: %s\n", swfdec_as_value_to_string (context, &val));
+    g_print ("ERROR: %s\n", swfdec_as_value_to_string (context, val));
     ret = EXIT_FAILURE;
   } else {
     g_print ("SUCCESS\n");
diff --git a/test/swfdec_test_buffer.c b/test/swfdec_test_buffer.c
index 07928c9..953013f 100644
--- a/test/swfdec_test_buffer.c
+++ b/test/swfdec_test_buffer.c
@@ -277,7 +277,7 @@ swfdec_test_buffer_from_args (SwfdecAsContext *cx, guint argc, SwfdecAsValue *ar
       b->data[0] = swfdec_as_value_to_integer (cx, &argv[i]);
     }
     if (b == NULL) {
-      const char *s = swfdec_as_value_to_string (cx, &argv[i]);
+      const char *s = swfdec_as_value_to_string (cx, argv[i]);
       gsize len = strlen (s);
       /* no terminating 0 byte on purpose here - use new Buffer (string, 0); to get that */
       b = swfdec_buffer_new (len);


More information about the Swfdec-commits mailing list