dlangBugzillaToGithub / migration_test

0 stars 0 forks source link

core.stdc.stdio.snprintf returns wrong value if the buffer is not sufficiently large #29

Open dlangBugzillaToGithub opened 3 years ago

dlangBugzillaToGithub commented 3 years ago

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.