www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 22266] New: core.stdc.stdio.snprintf returns wrong value if

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: nobody puremagic.com
          Reporter: ogion.art gmail.com

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.

--
Sep 02 2021