Mercurial > projects > ldc
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 } |