comparison lphobos/std/stdarg.d @ 70:fb265a6efea1 trunk

[svn r74] Fixed passing types with different alignment to D-style variadic functions. Fixed casting integer to pointer.
author lindquist
date Sun, 28 Oct 2007 19:33:50 +0100
parents d4a678905d5e
children 5825d48b27d1
comparison
equal deleted inserted replaced
69:2b5a2eaa88be 70:fb265a6efea1
10 10
11 alias void* va_list; 11 alias void* va_list;
12 12
13 T va_arg(T)(inout va_list vp) 13 T va_arg(T)(inout va_list vp)
14 { 14 {
15 va_list vptmp = vp; 15 static assert((T.sizeof & (T.sizeof -1)) == 0);
16 vp += T.sizeof; 16 va_list vptmp = cast(va_list)((cast(size_t)vp + T.sizeof - 1) & ~(T.sizeof - 1));
17 vp = vptmp + T.sizeof;
17 return *cast(T*)vptmp; 18 return *cast(T*)vptmp;
18 } 19 }