"const" ignored for return value causing incorrect "transfer full" default
I am pretty sure this was reported years ago, but it's not in the current bug list.
char const *value_peek_string1 (GnmValue const *v);
Gives... <return-value transfer-ownership="full">
const char *value_peek_string2 (GnmValue const *v);
Gives... <return-value transfer-ownership="none">
As far as the C language is concerned, these two declarations are identical (other than the name, of course).
But the introspection scanner sees them as different and, worse, applies the wrong default on value_peek_string1. The result is an extra free and it's downhill from there.