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.
The error presentation of.
SDCC : mcs51/ds390/pic16/pic14/TININative/ds400/hc08/s08 3.1.5 #7784 (May 25 2012) (Linux)
The new compiler can makes a mistake. Version: SDCC : pic16/pic14 3.1.5 #7792 (May 27 2012) (Linux)
"(Otherwise, I do not know to what should incorporate an override of a temporary registers.)"
I know it is easier to work for compiler, but this solution is wasting the PIC own RAM. In addition, the code is much longer.