aboutsummaryrefslogtreecommitdiff
path: root/hardinfo
diff options
context:
space:
mode:
Diffstat (limited to 'hardinfo')
-rw-r--r--hardinfo/udisks2_util.c19
1 files changed, 10 insertions, 9 deletions
diff --git a/hardinfo/udisks2_util.c b/hardinfo/udisks2_util.c
index 02b70e9f..65d5efd2 100644
--- a/hardinfo/udisks2_util.c
+++ b/hardinfo/udisks2_util.c
@@ -238,7 +238,7 @@ void udiskd_free(udiskd *u) {
g_free(u->partition_table);
g_free(u->partitions);
g_free(u->media);
- g_free(u->media_compatibility);
+ g_strfreev(u->media_compatibility);
g_free(u);
}
}
@@ -283,7 +283,7 @@ gpointer get_udisks2_drive_info(const char *blockdev, GDBusProxy *block, GDBusPr
GVariantIter *iter;
const gchar *str, *part;
udiskd *u = NULL;
-
+ gsize n, i;
u = udiskd_new();
u->block_dev = g_strdup(blockdev);
@@ -333,14 +333,15 @@ gpointer get_udisks2_drive_info(const char *blockdev, GDBusProxy *block, GDBusPr
v = get_dbus_property(drive, UDISKS2_DRIVE_INTERFACE, "MediaCompatibility");
if (v){
g_variant_get(v, "as", &iter);
- while (g_variant_iter_loop (iter, "s", &str)){
- if (u->media_compatibility == NULL){
- u->media_compatibility = g_strdup(str);
- }
- else{
- u->media_compatibility = h_strdup_cprintf(", %s", u->media_compatibility, str);
- }
+ n = g_variant_iter_n_children(iter);
+ u->media_compatibility = g_malloc0_n(n + 1, sizeof(gchar*));
+
+ i = 0;
+ while (g_variant_iter_loop (iter, "s", &str) && i < n){
+ u->media_compatibility[i] = g_strdup(str);
+ i++;
}
+
g_variant_iter_free (iter);
g_variant_unref(v);
}