pcmd.UserCallback is not null


#1

I have been trying to get ImGui running, but I keep getting the UserCallback field of DrawCmd as being not null. It should be NULL since I am not setting any draw callback. Anyone faced this before? Seems to be very particular. Tried on both windows and linux, it segfaults when I call the function (the pointer value is small like 0x1 or 0x6). I’m using the opengl3 + glfw example implementation.
Just want to know if someone else has also faced this problem?


#2

There’s maybe a mismatch between how your different compilation units are seeing the structure.
Do you have any modification meant for imconfig.h (generally #define) defined anywhere else?

Try printing sizeof(ImDrawCmd) and IM_OFFSET(ImDrawCmd, field_name) from different .cpp files.

Or, you have a classic memory overwrite but that sounds less likely.


#3

That was exactly it. I made a silly error. I #defined ImTextureID to GLuint in my source file before including imgui.h, but imgui.cpp and the other imgui files included imconfig.h without ImTextureID redefined. Sorry for this rather silly mistake.


#4

Note that you don’t need this #define if you are going to store a GLuint.
Just call your GLuint to void*, it fits perfectly.