sfink, your right ! This code working fine !The original code should work fine as well (you've found a bug :)). Since the return value isn't being used for anything, that callback (among others) should be called in void context. The patch is easy, modify Expat.xs, and replace all instances of
I've tested this, and it doesn't seem break anything.G_DISCARD|G_VOID);
I've also filed a bug report.