https://issues.dlang.org/show_bug.cgi?id=22266
Issue ID: 22266
Summary: core.stdc.stdio.snprintf returns wrong value if the
buffer is not sufficiently large
Product: D
Version: D2
Hardware: All
OS: Windows
Status: NEW
Severity: major
Priority: P1
Component: tools
Assignee: [email protected]
Reporter: [email protected]
According to C99 specification, if the buffer is not sufficiently large,
snprintf should still return the number of characters that would have been
written. However, the implementation that DMD uses by default on Windows
returns -1 instead.
void main() {
import core.stdc.stdio;
auto n = snprintf(null, 0, "test");
assert(n == 4); //fails
}
Passing either -m64 or -m32mscoff to DMD solves this.
--