Make array-printing code easier to follow
authorWill Thompson <will.thompson@collabora.co.uk>
Wed, 9 Sep 2009 19:35:13 +0000 (20:35 +0100)
committerColin Walters <walters@verbum.org>
Thu, 28 Jan 2010 22:01:23 +0000 (17:01 -0500)
Previously dbus_message_iter_get_arg_type() was called twice: once in
the loop condition to update 'current_type', and once to check if the
loop will run again. This patch moves updating current_type to the end
of the loop body.

tools/dbus-print-message.c

index 335aa3d..749fca6 100644 (file)
@@ -186,12 +186,17 @@ print_iter (DBusMessageIter *iter, dbus_bool_t literal, int depth)
 
            dbus_message_iter_recurse (iter, &subiter);
 
+           current_type = dbus_message_iter_get_arg_type (&subiter);
+
            printf("array [\n");
-           while ((current_type = dbus_message_iter_get_arg_type (&subiter)) != DBUS_TYPE_INVALID)
+           while (current_type != DBUS_TYPE_INVALID)
              {
                print_iter (&subiter, literal, depth+1);
+
                dbus_message_iter_next (&subiter);
-               if (dbus_message_iter_get_arg_type (&subiter) != DBUS_TYPE_INVALID)
+               current_type = dbus_message_iter_get_arg_type (&subiter);
+
+               if (current_type != DBUS_TYPE_INVALID)
                  printf (",");
              }
            indent(depth);