Also a note about the formatting argument of sprintf. Note that for the printf format width only defines the minimal width which will be used. So sprintf(buffer, "%10f", 1.0F) will always print 10 characters (space filed), it does NOT limit the maximum number of characters written.
E.g. sprintf(buffer, "%1.1f", 1E10) will still print "10000000000.0"
The reason why I don't think in your code the destination buffer overflows is that for IEEE32 floats, the largest float only has 3.4 E38, so with a negative sign, a decimal dot and a few digits after the decimal dot, the max output should still be less than 64 characters, So I guess in your case, you instead run into a overflow, can happen with any code, but with floats/sprintf its much more likely.
Daniel