Safe to throw away function arguments with cast?

Jarrett Billingsley jarrett.billingsley at gmail.com
Thu Dec 4 07:45:59 PST 2008


On Thu, Dec 4, 2008 at 10:37 AM, Brian <digitalmars at brianguertin.com> wrote:
> Is it safe to cast a function(or delegate) into one that takes more
> arguments, causing those arguments to be ignored?
> Example:
>
> void fn() {
> }
>
> auto fptr = cast(void function(int, int))&fn;
> fptr(1, 2);
>
> // It seems to work with a simple test case, I'm just afraid of it
> blowing up at me later on.
>

No.  According to the D ABI, the callee cleans the stack.  So if you
pass more parameters than the function expects, you'll end up trashing
the stack by leaving extra values on it.


More information about the Digitalmars-d-learn mailing list