Revert to using vsnprintf that can handle positional parameters.

This might fix #6598 and fix #6590.
Needs testing on windows, and I'm not sure what side effects it might have, I'm not sure why it was switched in the first place.