I see all kinds of issues that aren't clear.
For one, what is "Str16" ? is that a short string at a fixed length, double wide etc?
also, I see that you see it to '' at the start which makes it null and so on.
if you set the string to null at the start, its possible a new string will be created which will hold 0, and if that is the case, you overwrite memory.
the fpRead function, is that overloaded to handle strings and if so, what kind ?