+ return ret;
+}
+
+struct extend_map_element_data {
+ struct bt_value *extended_obj;
+ bt_bool got_error;
+};
+
+static
+bt_bool extend_map_element(const char *key,
+ struct bt_value *extension_obj_elem, void *data)
+{
+ bt_bool ret = BT_TRUE;
+
+ struct extend_map_element_data *extend_data = data;
+
+ /* Copy object which is to replace the current one */
+ struct bt_value *extension_obj_elem_copy =
+ bt_value_copy(extension_obj_elem);
+
+ /* Replace in extended object */
+ if (bt_value_map_insert(extend_data->extended_obj, key,
+ extension_obj_elem_copy)) {
+ BT_LOGE("Cannot replace value in extended value: key=\"%s\", "
+ "extended-value-addr=%p, element-value-addr=%p",
+ key, extend_data->extended_obj,
+ extension_obj_elem_copy);
+ goto error;
+ }
+
+ goto end;
+
+error:
+ ret = BT_FALSE;
+ extend_data->got_error = BT_TRUE;
+