win64 vararg bug?

Benjamin Thaut code at benjamin-thaut.de
Sun Feb 10 04:19:17 PST 2013


Am 10.02.2013 09:18, schrieb Benjamin Thaut:
> import core.vararg;
> import std.stdio;
>
> void print(string fmt, ...)
> {
>    auto arg = va_arg!(const(char)[])(_argptr);
>    writefln(fmt ~ arg);
> }
>
> void main(string[] args)
> {
>    print("+++","---");
> }

This only seems to happen when the argument before the variadic argument 
list is bigger then 8 byte. This works:

void print(int fmt, ...)
{
   auto arg = va_arg!(const(char)[])(_argptr);
   writefln("%s %s",fmt,arg);
}

void main(string[] args)
{
   print(1,"---");
}



More information about the Digitalmars-d mailing list