summaryrefslogtreecommitdiffstats
path: root/dbus/dbus-marshal.c
diff options
context:
space:
mode:
Diffstat (limited to 'dbus/dbus-marshal.c')
-rw-r--r--dbus/dbus-marshal.c27
1 files changed, 19 insertions, 8 deletions
diff --git a/dbus/dbus-marshal.c b/dbus/dbus-marshal.c
index 6e4f4143..8e14d702 100644
--- a/dbus/dbus-marshal.c
+++ b/dbus/dbus-marshal.c
@@ -137,11 +137,6 @@ _dbus_marshal_double (DBusString *str,
int byte_order,
double value)
{
- if (!_dbus_string_set_length (str,
- DBUS_ALIGN_VALUE (_dbus_string_get_length (str),
- sizeof (double))))
- return FALSE;
-
if (byte_order != DBUS_COMPILER_BYTE_ORDER)
swap_bytes ((unsigned char *)&value, sizeof (double));
@@ -209,12 +204,19 @@ _dbus_marshal_string (DBusString *str,
int byte_order,
const char *value)
{
- int len;
+ int len, old_string_len;
+ old_string_len = _dbus_string_get_length (str);
+
len = strlen (value);
if (!_dbus_marshal_uint32 (str, byte_order, len))
- return FALSE;
+ {
+ /* Restore the previous length */
+ _dbus_string_set_length (str, old_string_len);
+
+ return FALSE;
+ }
return _dbus_string_append_len (str, value, len + 1);
}
@@ -234,8 +236,17 @@ _dbus_marshal_byte_array (DBusString *str,
const unsigned char *value,
int len)
{
+ int old_string_len;
+
+ old_string_len = _dbus_string_get_length (str);
+
if (!_dbus_marshal_uint32 (str, byte_order, len))
- return FALSE;
+ {
+ /* Restore the previous length */
+ _dbus_string_set_length (str, old_string_len);
+
+ return FALSE;
+ }
return _dbus_string_append_len (str, value, len);
}