digitalmars.D.bugs - [Issue 3046] New: Segfault with C++ static variable
- d-bugmail puremagic.com (30/30) Jun 02 2009 http://d.puremagic.com/issues/show_bug.cgi?id=3046
- d-bugmail puremagic.com (11/11) Jun 02 2009 http://d.puremagic.com/issues/show_bug.cgi?id=3046
- d-bugmail puremagic.com (11/13) Jun 02 2009 http://d.puremagic.com/issues/show_bug.cgi?id=3046
- d-bugmail puremagic.com (18/18) Aug 11 2010 http://d.puremagic.com/issues/show_bug.cgi?id=3046
- d-bugmail puremagic.com (12/12) Aug 28 2010 http://d.puremagic.com/issues/show_bug.cgi?id=3046
http://d.puremagic.com/issues/show_bug.cgi?id=3046
Summary: Segfault with C++ static variable
Product: D
Version: 2.030
Platform: x86
OS/Version: Linux
Status: NEW
Keywords: ice-on-invalid-code
Severity: normal
Priority: P2
Component: DMD
AssignedTo: bugzilla digitalmars.com
ReportedBy: rsinfu gmail.com
The compiler segfaults compiling this invalid code:
--------------------
class C
{
extern(C++):
static int var; // C++ variable should be error
}
--------------------
The segfault happend in cpp_mangle_name() (cppmangle.c):
--------------------
FuncDeclaration *fd = s->isFuncDeclaration();
if (fd->isConst()) <-- HERE
buf->writeByte('K');
--------------------
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Jun 02 2009
http://d.puremagic.com/issues/show_bug.cgi?id=3046
Don <clugdbug yahoo.com.au> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |clugdbug yahoo.com.au
I can't reproduce this. It works for me on Windows. Is it Linux only, or is
something missing from the test case?
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Jun 02 2009
http://d.puremagic.com/issues/show_bug.cgi?id=3046 ---I can't reproduce this. It works for me on Windows. Is it Linux only, or is something missing from the test case?It's Linux only. On Linux, C++ name mangling is done by the front end. The front end assumes that extern(C++) is applied only to a function, and segfaults when extern(C++) is applied to a static variable. On Windows, C++ name mangling is done by the backend, which can deal with C++ variable name mangling. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jun 02 2009
http://d.puremagic.com/issues/show_bug.cgi?id=3046
Don <clugdbug yahoo.com.au> changed:
What |Removed |Added
----------------------------------------------------------------------------
Keywords| |patch
Patch: cpp_mangle.c, cpp_mangle_name(), line 112.
FuncDeclaration *fd = s->isFuncDeclaration();
+ if (!fd)
+ {
+ s->error("cannot be declared as extern(C++)");
+ return;
+ }
if (fd->isConst())
buf->writeByte('K');
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Aug 11 2010
http://d.puremagic.com/issues/show_bug.cgi?id=3046
Walter Bright <bugzilla digitalmars.com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |RESOLVED
CC| |bugzilla digitalmars.com
Resolution| |FIXED
15:09:43 PDT ---
http://www.dsource.org/projects/dmd/changeset/647
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Aug 28 2010









d-bugmail puremagic.com 