Win64 fixes

This commit is contained in:
Walter Bright 2012-09-11 19:39:15 -07:00
parent 2346ef9a68
commit 18f7d60f0d
3 changed files with 49 additions and 17 deletions

View file

@ -262,7 +262,7 @@ class OutBuffer
auto psize = buffer.length;
for (;;)
{
version(Win32)
version(Windows)
{
count = _vsnprintf(p,psize,f,args);
if (count != -1)
@ -270,7 +270,7 @@ class OutBuffer
psize *= 2;
p = cast(char *) alloca(psize); // buffer too small, try again with larger size
}
version(Posix)
else version(Posix)
{
count = vsnprintf(p,psize,f,args);
if (count == -1)
@ -286,6 +286,10 @@ class OutBuffer
+/
p = cast(char *) alloca(psize); // buffer too small, try again with larger size
}
else
{
static assert(0);
}
}
write(cast(ubyte[]) p[0 .. count]);
/+
@ -301,21 +305,29 @@ class OutBuffer
* Append output of C's printf() to internal buffer.
*/
version (X86_64)
void printf(string format, ...)
{
va_list ap;
va_start(ap, __va_argsave);
vprintf(format, ap);
va_end(ap);
}
else
void printf(string format, ...)
{
va_list ap;
ap = cast(va_list)&format;
ap += format.sizeof;
vprintf(format, ap);
version (Win64)
{
va_list ap;
ap = cast(va_list)&format;
ap += format.sizeof;
vprintf(format, ap);
}
else version (X86_64)
{
va_list ap;
va_start(ap, __va_argsave);
vprintf(format, ap);
va_end(ap);
}
else
{
va_list ap;
ap = cast(va_list)&format;
ap += format.sizeof;
vprintf(format, ap);
}
}
/*****************************************