When a message is created with dbus_message_new() it gets no fields.
Then, while appending some values, but before setting path, interface,
etc. a single field appears - signature. If there would be more fields,
then after deleting the last field we would need to remove padding
from second-to-last field. In case of a single field, we have
no second-to-last field, only empty dictionary. Empty dictionaries do
not have padding at the end, so we do not need to remove it.
Change-Id: Idb15f3999a3ff0117f906ec632f462eb5cdaab09
}
n_fields_offsets--;
- /* remove padding from now-last field */
- _dbus_string_shorten (&header->data,
- _dbus_string_get_length(&header->data) -
- (FIRST_GVARIANT_FIELD_OFFSET + fields_offsets[n_fields_offsets-1]));
+ /* remove padding from now-last field, if there is still any field */
+ if (n_fields_offsets > 0)
+ _dbus_string_shorten (&header->data,
+ _dbus_string_get_length(&header->data) -
+ (FIRST_GVARIANT_FIELD_OFFSET + fields_offsets[n_fields_offsets-1]));
+
header->padding = 0;
}
}