mirror of
https://github.com/odin-lang/Odin.git
synced 2026-10-13 12:36:36 -04:00
C passes a va_list argument by value. The bindings took ^va_list, which only matches x86-64 System V, where va_list is an array that decays to a pointer. On Darwin, Windows and the other targets va_list is a pointer or a struct, so vsnprintf and friends received the address of the list instead of the list and printed or scanned garbage. The foreign declarations now use the platform's form, and the public procedures keep taking ^va_list so callers stay portable. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>