Skip to contentSkip to conversation

tests: don't use g_value_set_static_string() for non-static strings

PATCH Applied Bartosz Golaszewski 1 participant 2 messages Aug 13, 2024 – Aug 16, 2024 GPIO

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 tests: don't use g_value_set_static_string() for non-static strings

From: Bartosz Golaszewski <[email protected]>

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.

---
 tests/gpiosim-glib/gpiosim-glib.c | 24 +++++-------------------
 1 file changed, 5 insertions(+), 19 deletions(-)
tests/gpiosim-glib/gpiosim-glib.c +5 -19
index 4eaeace..27ce019 100644
@@ -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
Signature · 1 line
2.43.0
author Applied
#1 lore raw

From: Bartosz Golaszewski <[email protected]>

Quoted 8 lines · Bartosz Golaszewski

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.

[...]

Applied, thanks!

[1/1] tests: don't use g_value_set_static_string() for non-static strings

      commit: 47e14b2cefb5a6d4ae6d7bffd76fa7bd129cd23b

Best regards,

Signature · 1 line
Bartosz Golaszewski <[email protected]>