tests: don't use g_value_set_static_string() for non-static strings
authorBartosz Golaszewski <bartosz.golaszewski@linaro.org>
Tue, 13 Aug 2024 09:30:25 +0000 (11:30 +0200)
committerBartosz Golaszewski <bartosz.golaszewski@linaro.org>
Fri, 16 Aug 2024 07:56:16 +0000 (09:56 +0200)
As pointed out by Philip Withnall, g_value_set_static_string() must only
be used with actual static strings and not with ones whose life-time is
tied to that of their owner. Use g_value_set_string() to get the gpiosim
properties and rework the existing getter functions returning const
gchar * to return the address provided by libgpiosim directly instead of
passing through the GObject property path.

Suggested-by: Philip Withnall <philip@tecnocode.co.uk>
Link: https://lore.kernel.org/r/20240813093025.94980-1-brgl@bgdev.pl
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
tests/gpiosim-glib/gpiosim-glib.c

index 4eaeace3621d1facaf5fe5ce618599f7433ef8c0..27ce019c30515e474c2faa326a9cb40b1af55cd7 100644 (file)
@@ -245,12 +245,11 @@ static void g_gpiosim_chip_get_property(GObject *obj, guint prop_id,
 
        switch (prop_id) {
        case G_GPIOSIM_CHIP_PROP_DEV_PATH:
-               g_value_set_static_string(val,
-                               gpiosim_bank_get_dev_path(self->bank));
+               g_value_set_string(val, gpiosim_bank_get_dev_path(self->bank));
                break;
        case G_GPIOSIM_CHIP_PROP_NAME:
-               g_value_set_static_string(val,
-                               gpiosim_bank_get_chip_name(self->bank));
+               g_value_set_string(val,
+                                  gpiosim_bank_get_chip_name(self->bank));
                break;
        default:
                G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, prop_id, pspec);
@@ -396,27 +395,14 @@ static void g_gpiosim_chip_init(GPIOSimChip *self)
        self->hogs = NULL;
 }
 
-static const gchar *
-g_gpiosim_chip_get_string_prop(GPIOSimChip *self, const gchar *prop)
-{
-       GValue val = G_VALUE_INIT;
-       const gchar *str;
-
-       g_object_get_property(G_OBJECT(self), prop, &val);
-       str = g_value_get_string(&val);
-       g_value_unset(&val);
-
-       return str;
-}
-
 const gchar *g_gpiosim_chip_get_dev_path(GPIOSimChip *self)
 {
-       return g_gpiosim_chip_get_string_prop(self, "dev-path");
+       return gpiosim_bank_get_dev_path(self->bank);
 }
 
 const gchar *g_gpiosim_chip_get_name(GPIOSimChip *self)
 {
-       return g_gpiosim_chip_get_string_prop(self, "name");
+       return gpiosim_bank_get_chip_name(self->bank);
 }
 
 GPIOSimValue