| |
|
Don Allen
| On Wednesday, 31 January 2024 at 20:01:51 UTC, Steven Schveighoffer wrote:
> On Wednesday, 31 January 2024 at 18:11:43 UTC, Johan wrote:
> Did you check that the D type of g_type_string/boolean matches the size of the type of the C constants? (GType which is unsigned long in C, https://codebrowser.dev/gtk/gtk/subprojects/glib/gobject/gtype.h.html#383)
gtkd project uses size_t
https://github.com/gtkd-developers/GtkD/blob/17d7dc25e1adc9b86aff381b950f21706118ebeb/generated/gtkd/gobject/c/types.d#L51
-Steve
The D type of g_type_xxxxx was the answer. My hack had defined it as uint, should be ulong. So the arguments on the stack were not what the C code was expecting.
Now I wonder why my code worked with dmd.
My most cpu-intensive application, the report generator, is about 9% faster compiled with ldc than dmd, both in release mode.
Thanks to everyone who replied and especially Johan, who asked the question that led me to the answer.
|