From df652bd9a1f170b9a1af193b0b94136b7be690db Mon Sep 17 00:00:00 2001 From: Havoc Pennington Date: Sun, 2 Jan 2005 02:47:51 +0000 Subject: [PATCH] change strings to be marshaled consistently with the other basic types (address of the value passed in, so char**) --- dbus/dbus-marshal-basic.c | 18 ++++++++++-------- dbus/dbus-marshal-recursive.c | 15 +++++++++------ 2 files changed, 19 insertions(+), 14 deletions(-) diff --git a/dbus/dbus-marshal-basic.c b/dbus/dbus-marshal-basic.c index 7de7a4a..d949bff 100644 --- a/dbus/dbus-marshal-basic.c +++ b/dbus/dbus-marshal-basic.c @@ -999,12 +999,17 @@ marshal_signature (DBusString *str, } /** - * Marshals a basic type + * Marshals a basic type. The "value" pointer is always the + * address of a variable containing the basic type value. + * So for example for int32 it will be dbus_int32_t*, and + * for string it will be const char**. This is for symmetry + * with _dbus_demarshal_basic_type() and to have a simple + * consistent rule. * * @param str string to marshal to * @param insert_at where to insert the value * @param type type of value - * @param value pointer to value + * @param value pointer to a variable containing the value * @param byte_order byte order * @param pos_after #NULL or the position after the type * @returns #TRUE on success @@ -1051,10 +1056,10 @@ _dbus_marshal_basic_type (DBusString *str, break; case DBUS_TYPE_STRING: case DBUS_TYPE_OBJECT_PATH: - return marshal_string (str, insert_at, (const char*) value, byte_order, pos_after); + return marshal_string (str, insert_at, *(const char**) value, byte_order, pos_after); break; case DBUS_TYPE_SIGNATURE: - return marshal_signature (str, insert_at, (const char*) value, pos_after); + return marshal_signature (str, insert_at, *(const char**) value, pos_after); break; default: _dbus_assert_not_reached ("not a basic type"); @@ -1285,10 +1290,7 @@ _dbus_marshal_basic_type_array (DBusString *str, #define MARSHAL_TEST_STRCMP(typename, byte_order, literal) \ do { \ - if (!_dbus_marshal_basic_type (&str, pos, DBUS_TYPE_##typename, \ - literal, \ - byte_order, NULL)) \ - _dbus_assert_not_reached ("no memory"); \ + MARSHAL_BASIC (typename, byte_order, literal); \ dump_pos = pos; \ DEMARSHAL_BASIC (typename, byte_order); \ if (strcmp (literal, v_##typename) != 0) \ diff --git a/dbus/dbus-marshal-recursive.c b/dbus/dbus-marshal-recursive.c index ba5d2bf..7829b45 100644 --- a/dbus/dbus-marshal-recursive.c +++ b/dbus/dbus-marshal-recursive.c @@ -2871,13 +2871,14 @@ string_write_value (TestTypeNode *node, int seed) { char buf[MAX_SAMPLE_STRING_LEN]; + const char *v_string = buf; string_from_seed (buf, node->klass->subclass_detail, seed); - + return _dbus_type_writer_write_basic (writer, node->klass->typecode, - buf); + &v_string); } static dbus_bool_t @@ -3063,12 +3064,13 @@ object_path_write_value (TestTypeNode *node, int seed) { char buf[MAX_SAMPLE_OBJECT_PATH_LEN]; - + const char *v_string = buf; + object_path_from_seed (buf, seed); return _dbus_type_writer_write_basic (writer, node->klass->typecode, - buf); + &v_string); } static dbus_bool_t @@ -3129,12 +3131,13 @@ signature_write_value (TestTypeNode *node, int seed) { char buf[MAX_SAMPLE_SIGNATURE_LEN]; - + const char *v_string = buf; + signature_from_seed (buf, seed); return _dbus_type_writer_write_basic (writer, node->klass->typecode, - buf); + &v_string); } static dbus_bool_t -- 2.7.4