Thread overview
[Issue 16555] Stack corruption when calling multi-parameter outer function from nested function
Oct 30, 2016
Walter Bright
September 27, 2016
https://issues.dlang.org/show_bug.cgi?id=16555

Steven Schveighoffer <schveiguy@yahoo.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |schveiguy@yahoo.com

--- Comment #1 from Steven Schveighoffer <schveiguy@yahoo.com> ---
The stack corruption I think is on the expected location of x when calling the function.

Note that outer function is not needed, this also produces (same) corrupt
output:

import std.stdio;

void main()
{
    void inner(double x)
    {
        if(x == 999) // to show that x itself isn't corrupt
        {
            writefln("x=%s a=%s b=%s c=%s d=%s e=%s f=%s g=%s h=%s", x, 1.0,
2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0);
            //outer(x, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0);
        }
    }

    inner(999.0);
}

Not sure how to edit the description, but definitely the number of parameters plays a role, and probably the inner function.

--
October 30, 2016
https://issues.dlang.org/show_bug.cgi?id=16555

Walter Bright <bugzilla@digitalmars.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |bugzilla@digitalmars.com

--- Comment #2 from Walter Bright <bugzilla@digitalmars.com> ---
https://github.com/dlang/dmd/pull/6171

--
March 03, 2018
https://issues.dlang.org/show_bug.cgi?id=16555

--- Comment #3 from github-bugzilla@puremagic.com ---
Commits pushed to master at https://github.com/dlang/dmd

https://github.com/dlang/dmd/commit/815bb8f7b37882d6590281b3542548632c47be22 Fix issue 16555 - Generate correct code for pushing scalar parameters.

https://github.com/dlang/dmd/commit/d91b678235d5357957762005bce7c4b46f265f62 Merge pull request #7890 from JinShil/fix_16555

Fix issue 16555 - Generate correct code for pushing scalar parameters. merged-on-behalf-of: Jacob Carlborg <jacob-carlborg@users.noreply.github.com>

--
March 03, 2018
https://issues.dlang.org/show_bug.cgi?id=16555

github-bugzilla@puremagic.com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|---                         |FIXED

--