Printf is clearly reusing it's buffer and uses size to write partial strings form it.
NOTE: Commit before doing this, since I don't know exactly which functions are using write (I think/hope it's just the syscalls - but they provide random buffer sizes, so expect failures and fix them)