>>156937>Da du dich mit der glib auszukennen scheinst
Naja, geht so. Mit den Interna ist Felix jetzt nicht so genau vertraut.
Felix wollte eigentlich bereits früher antworten, merkte dabei aber, dass er selber noch mal genauer darüber nachdenken muss. Das entsprechende Commit [0] hat inzwischen ja schon ein anderer Felix rausgesucht. Der zugehörige MR [1] ist auch noch ganz interessant.
../../source/malcontent/libmalcontent-ui/user-controls.c:1001:21: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
1001 | if (g_set_object (&self->user, user))
/opt/gnome/install/include/glib-2.0/gobject/gobject.h:744:33: note: in definition of macro ‘g_set_object’
744 | (g_set_object) ((GObject **) (object_ptr), (GObject *) (new_object)) \
| ^~~~~~~~~~
Es sieht jedenfalls so aus, als wäre das Problem in diesem Fall gewesen, dass es sich hier nicht bloß um einen Pointer handelt, sondern um einen Pointer auf einen Pointer, der dann auch noch dereferenziert wird. Warum genau das einen Unterschied macht, ist Felix aber bisher auch noch nicht klar geworden. Felix hat jetzt ein paar Tage darüber nachgedacht und ist zu keinem wirklichen Ergebnis gekommen. Felix geht daher davon aus, dass es einfach so ist, weil es so ist – eine von vielen Ungereimtheiten in C. Keine sonderlich befriedigende Antwort, ich weiß. Vielleicht weiß ja ein anderer Felix mehr.
Eventuell fällt Felix dazu ja später noch mehr ein.
[0] https://gitlab.gnome.org/GNOME/glib/-/commit/51acb01f73da2ba7eb8838745df05bdd044a2636
[1] https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1372