www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - seg fault due to a ref parameter with default value

reply "Rob T" <alanb ucora.com> writes:
void f( ref string a = "" )
{
    a = "crash and burn";
}

main()
{

   f(); // seg fault. This should not even compile.

}

I did not see a bug report on this one, but maybe I missed it.

Any comments before I submit a bug report?

--rt
Mar 20 2013
next sibling parent "bearophile" <bearophileHUGS lycos.com> writes:
Rob T:

 Any comments before I submit a bug report?

I don't see a crash (Win 32) but it should not compile. Bye, bearophile
Mar 20 2013
prev sibling next sibling parent "Rob T" <alanb ucora.com> writes:
On Thursday, 21 March 2013 at 00:30:41 UTC, bearophile wrote:
 Rob T:

 Any comments before I submit a bug report?

I don't see a crash (Win 32) but it should not compile. Bye, bearophile

I'm running it on Linux 64 with compiler optimizations enabled. I think the solution to the problem is that it simply should not compile. --rt
Mar 20 2013
prev sibling next sibling parent "deadalnix" <deadalnix gmail.com> writes:
On Wednesday, 20 March 2013 at 23:12:37 UTC, Rob T wrote:
 void f( ref string a = "" )
 {
    a = "crash and burn";
 }

 main()
 {

   f(); // seg fault. This should not even compile.

 }

 I did not see a bug report on this one, but maybe I missed it.

 Any comments before I submit a bug report?

 --rt

I don't think "" should be an lvalue, so it should bind to ref parameter in the first place.
Mar 20 2013
prev sibling next sibling parent Jonathan M Davis <jmdavisProg gmx.com> writes:
On Thursday, March 21, 2013 05:07:14 Rob T wrote:
 On Thursday, 21 March 2013 at 00:30:41 UTC, bearophile wrote:
 Rob T:
 Any comments before I submit a bug report?

I don't see a crash (Win 32) but it should not compile. Bye, bearophile

I'm running it on Linux 64 with compiler optimizations enabled. I think the solution to the problem is that it simply should not compile.

Of course it shouldn't compile. It's clearly an "accepts-invalid" bug. Literals aren't lvalues, and ref only accepts lvalues. - Jonathan M Davis
Mar 20 2013
prev sibling parent "Rob T" <alanb ucora.com> writes:
http://d.puremagic.com/issues/show_bug.cgi?id=9773
Mar 21 2013