strange test in line 73: if (!(size = sizeField(arg))) size = argByteSize = sizeof(void *); else argByteSize = abs(size); for me, it means if (sizeField(arg) != 0) size = argByteSize = sizeof(void *); else size = argByteSize = 0; is it intentional ? Nicolas