Fixed for differing va_list implements (e.g. will vsprintf affect caller va_list), and where va_list is a promoted to a pointer already or not