Fix double-free.

The field is deleted by a base class dtor.
Fix two use-after-free bugs.
Add missing va_end()'s to match va_start()'s.

Probably not an issue on most implementations, but undefined behavior
is scary and it's easy to fix.
Remove unreachable code.
Add missing break to switch statement case.
Merge branch 'fastpath'