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.
ogion.art reported this on 2021-09-02T12:09:26Z
Transfered from https://issues.dlang.org/show_bug.cgi?id=22266
Description
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.