I might add, always adding a zero termination costs nothing apart from a few bytes in the data segment. At the very least this is a performance issue, as GDC's toStringz(string) would always copy, and DMD's and LDC's would not.