| Index: dbus/message.cc | 
| diff --git a/dbus/message.cc b/dbus/message.cc | 
| index 8a58dbaa3bf955c9f7ba9e1924437be577cd2038..fe497ba9a6e06e788e3fa1091e6afd1da024c980 100644 | 
| --- a/dbus/message.cc | 
| +++ b/dbus/message.cc | 
| @@ -599,6 +599,19 @@ void MessageWriter::AppendArrayOfBytes(const uint8_t* values, size_t length) { | 
| CloseContainer(&array_writer); | 
| } | 
|  | 
| +void MessageWriter::AppendArrayOfDoubles(const double* values, size_t length) { | 
| +  DCHECK(!container_is_open_); | 
| +  MessageWriter array_writer(message_); | 
| +  OpenArray("d", &array_writer); | 
| +  const bool success = dbus_message_iter_append_fixed_array( | 
| +      &(array_writer.raw_message_iter_), | 
| +      DBUS_TYPE_DOUBLE, | 
| +      &values, | 
| +      static_cast<int>(length)); | 
| +  CHECK(success) << "Unable to allocate memory"; | 
| +  CloseContainer(&array_writer); | 
| +} | 
| + | 
| void MessageWriter::AppendArrayOfStrings( | 
| const std::vector<std::string>& strings) { | 
| DCHECK(!container_is_open_); | 
| @@ -822,7 +835,26 @@ bool MessageReader::PopArrayOfBytes(const uint8_t** bytes, size_t* length) { | 
| dbus_message_iter_get_fixed_array(&array_reader.raw_message_iter_, | 
| bytes, | 
| &int_length); | 
| -  *length = static_cast<int>(int_length); | 
| +  *length = static_cast<size_t>(int_length); | 
| +  return true; | 
| +} | 
| + | 
| +bool MessageReader::PopArrayOfDoubles(const double** doubles, size_t* length) { | 
| +  MessageReader array_reader(message_); | 
| +  if (!PopArray(&array_reader)) | 
| +    return false; | 
| +  if (!array_reader.HasMoreData()) { | 
| +    *length = 0; | 
| +    *doubles = nullptr; | 
| +    return true; | 
| +  } | 
| +  if (!array_reader.CheckDataType(DBUS_TYPE_DOUBLE)) | 
| +    return false; | 
| +  int int_length = 0; | 
| +  dbus_message_iter_get_fixed_array(&array_reader.raw_message_iter_, | 
| +                                    doubles, | 
| +                                    &int_length); | 
| +  *length = static_cast<size_t>(int_length); | 
| return true; | 
| } | 
|  | 
|  |