2003-01-07 Anders Carlsson <andersca@codefactory.se>
authorAnders Carlsson <andersca@codefactory.se>
Mon, 6 Jan 2003 22:19:09 +0000 (22:19 +0000)
committerAnders Carlsson <andersca@codefactory.se>
Mon, 6 Jan 2003 22:19:09 +0000 (22:19 +0000)
* dbus/dbus-marshal.c: (_dbus_marshal_double),
(_dbus_marshal_string), (_dbus_marshal_byte_array):
* dbus/dbus-message.c: (dbus_message_append_int32),
(dbus_message_append_uint32), (dbus_message_append_double),
(dbus_message_append_string), (dbus_message_append_byte_array):
Handle OOM restoration.

ChangeLog
dbus/dbus-marshal.c
dbus/dbus-message.c

index 976e0d4..a73d3f3 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,14 @@
 2003-01-07  Anders Carlsson  <andersca@codefactory.se>
 
+       * dbus/dbus-marshal.c: (_dbus_marshal_double),
+       (_dbus_marshal_string), (_dbus_marshal_byte_array):
+       * dbus/dbus-message.c: (dbus_message_append_int32),
+       (dbus_message_append_uint32), (dbus_message_append_double),
+       (dbus_message_append_string), (dbus_message_append_byte_array):
+       Handle OOM restoration.
+       
+2003-01-07  Anders Carlsson  <andersca@codefactory.se>
+
        * dbus/dbus-marshal.c: (_dbus_marshal_string),
        (_dbus_demarshal_string), (_dbus_marshal_test):
        * dbus/dbus-marshal.h:
index 6e4f414..8e14d70 100644 (file)
@@ -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);
 }
index b7f6664..864887a 100644 (file)
@@ -230,7 +230,10 @@ dbus_message_append_int32 (DBusMessage  *message,
   _dbus_assert (!message->locked);
 
   if (!_dbus_string_append_byte (&message->body, DBUS_TYPE_INT32))
-    return FALSE;
+    {
+      _dbus_string_shorten (&message->body, 1);
+      return FALSE;
+    }
   
   return _dbus_marshal_int32 (&message->body,
                              DBUS_COMPILER_BYTE_ORDER, value);
@@ -251,7 +254,10 @@ dbus_message_append_uint32 (DBusMessage   *message,
   _dbus_assert (!message->locked);
 
   if (!_dbus_string_append_byte (&message->body, DBUS_TYPE_UINT32))
-    return FALSE;
+    {
+      _dbus_string_shorten (&message->body, 1);
+      return FALSE;
+    }
   
   return _dbus_marshal_uint32 (&message->body,
                               DBUS_COMPILER_BYTE_ORDER, value);
@@ -272,7 +278,10 @@ dbus_message_append_double (DBusMessage *message,
   _dbus_assert (!message->locked);
 
   if (!_dbus_string_append_byte (&message->body, DBUS_TYPE_INT32))
-    return FALSE;
+    {
+      _dbus_string_shorten (&message->body, 1);
+      return FALSE;
+    }
   
   return _dbus_marshal_double (&message->body,
                               DBUS_COMPILER_BYTE_ORDER, value);
@@ -294,7 +303,10 @@ dbus_message_append_string (DBusMessage *message,
   _dbus_assert (value != NULL);
 
   if (!_dbus_string_append_byte (&message->body, DBUS_TYPE_UTF8_STRING))
-    return FALSE;
+    {
+      _dbus_string_shorten (&message->body, 1);
+      return FALSE;
+    }
   
   return _dbus_marshal_string (&message->body,
                               DBUS_COMPILER_BYTE_ORDER, value);
@@ -318,7 +330,10 @@ dbus_message_append_byte_array (DBusMessage         *message,
   _dbus_assert (value != NULL);
 
   if (!_dbus_string_append_byte (&message->body, DBUS_TYPE_BYTE_ARRAY))
-    return FALSE;
+    {
+      _dbus_string_shorten (&message->body, 1);
+      return FALSE;
+    }
   
   return _dbus_marshal_byte_array (&message->body,
                                   DBUS_COMPILER_BYTE_ORDER, value, len);