Search code examples
gtkglibgobject

Using `g_object_set_data` for passing user name


I am using g_object_set_data to set user name with event_box so in call back i can get it with in event_box pointer.

g_object_set_data(G_OBJECT(event_box), "user_name", (gpointer)(user_name) );

but problem is that i am setting user_name which is not an pointer allocated string.
It is an local string (not allocated on hip) which gets destroyed.

So is it necessary to allocated and then use the pointer, i just want to associate one name with this event_box.


Solution

  • Use the following code:

    g_object_set_data_full (G_OBJECT (event_box),
                            "user_name",
                            g_strdup (user_name),
                            (GDestroyNotify) g_free);
    

    This way the string will duplicated on the heap and the copy will get freed automatically when event_box is destroyed.