The vfprintf when writing I found a bug. A function return value makes into a union. The return value is a pointer. The compiler only that does it, the value makes to temporary registers, but it does not make it into the union from here.
(Otherwise, I do not know to what should incorporate an override of a temporary registers.) If the type of value is not pointer, then the operation is going correctly.