digitalmars.D.bugs - [Issue 4709] New: const struct leads DMD terminated abnormally
- d-bugmail puremagic.com (50/50) Aug 22 2010 http://d.puremagic.com/issues/show_bug.cgi?id=4709
- d-bugmail puremagic.com (14/14) Aug 22 2010 http://d.puremagic.com/issues/show_bug.cgi?id=4709
- d-bugmail puremagic.com (25/25) Nov 06 2010 http://d.puremagic.com/issues/show_bug.cgi?id=4709
- d-bugmail puremagic.com (10/10) Nov 06 2010 http://d.puremagic.com/issues/show_bug.cgi?id=4709
- d-bugmail puremagic.com (12/12) Nov 07 2010 http://d.puremagic.com/issues/show_bug.cgi?id=4709
http://d.puremagic.com/issues/show_bug.cgi?id=4709
Summary: const struct leads DMD terminated abnormally
Product: D
Version: D2
Platform: x86
OS/Version: Windows
Status: NEW
Severity: normal
Priority: P2
Component: DMD
AssignedTo: nobody puremagic.com
ReportedBy: bitworld qq.com
The following code will lead DMD terminated abnormally. After getting rid of
the "const" in "const struct SB_uint8", this termination problem is missing.
===================
import std.stdio;
/*
struct D_Shift {
ushort symbol;
ubyte shift_kind;
ubyte op_assoc;
int op_priority;
int term_priority;
int action_index;
}
*/
// the bug is here
const struct SB_uint8 {
D_Shift **shift;
ubyte *[2] scanner_block;
}
int main(string[] args)
{
return 0;
}
/*
Z:\>dmd main.d
main.d(17): Error: identifier 'D_Shift' is not defined
main.d(17): Error: D_Shift is used as a type
main.d(20): Error: identifier 'D_Shift' is not defined
main.d(20): Error: D_Shift is used as a type
Assertion failure: 'tn->mod & MODimmutable || tn->mod & MODconst' on line 875
in
file 'mtype.c'
abnormal program termination
*/
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Aug 22 2010
http://d.puremagic.com/issues/show_bug.cgi?id=4709
bearophile_hugs eml.cc changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |bearophile_hugs eml.cc
It's the undefined Bar inside a const struct that causes the problem:
const struct Foo {
Bar* p;
}
void main() {}
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Aug 22 2010
http://d.puremagic.com/issues/show_bug.cgi?id=4709
Jeremy <jerminatorster+dbugs gmail.com> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |jerminatorster+dbugs gmail.
| |com
PDT ---
I get this same bug using 'alias const', eg:
alias int ITEMIDLIST_ABSOLUTE;
alias const ITEMIDLIST_ABSOLUTE *PCIDLIST_ABSOLUTE;
Gives the same compile error:
Assertion failure: 'tn->mod & MODimmutable || tn->mod & MODconst' on line 875
in file 'mtype.c'
This also happens if you use a struct:
struct ITEMIDLIST_ABSOLUTE
{
int foo;
}
alias const ITEMIDLIST_ABSOLUTE *PCIDLIST_ABSOLUTE;
But *not* if you use a primitive type directly:
alias const int *PCIDLIST_ABSOLUTE;
Removing the const also avoids the error.
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Nov 06 2010
http://d.puremagic.com/issues/show_bug.cgi?id=4709
Don <clugdbug yahoo.com.au> changed:
What |Removed |Added
----------------------------------------------------------------------------
Keywords| |patch
My patch for bug 4434 fixes this.
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Nov 06 2010
http://d.puremagic.com/issues/show_bug.cgi?id=4709
Walter Bright <bugzilla digitalmars.com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |RESOLVED
CC| |bugzilla digitalmars.com
Resolution| |DUPLICATE
12:27:23 PST ---
*** This issue has been marked as a duplicate of issue 4434 ***
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Nov 07 2010









d-bugmail puremagic.com 