Skip to content

Commit

Permalink
Merge pull request #5828 from WalterBright/fix16080
Browse files Browse the repository at this point in the history
fix Issue 16080 - [REG2.071.0] Internal error: backend\cgobj.c 3406 w…
  • Loading branch information
andralex committed Jun 1, 2016
2 parents 266de20 + 4d867e5 commit a80eb25
Show file tree
Hide file tree
Showing 4 changed files with 23 additions and 3 deletions.
10 changes: 7 additions & 3 deletions src/backend/cgobj.c
Expand Up @@ -2506,7 +2506,7 @@ int Obj::external_def(const char *name)
{ unsigned len;
char *e;

//dbg_printf("Obj::external_def('%s')\n",name);
//printf("Obj::external_def('%s', %d)\n",name,obj.extidx + 1);
assert(name);
len = strlen(name); // length of identifier
if (obj.extdatai + len + ONS_OHD + 1 > sizeof(obj.extdata))
Expand All @@ -2530,7 +2530,7 @@ int Obj::external_def(const char *name)

int Obj::external(Symbol *s)
{
//dbg_printf("Obj::external('%s')\n",s->Sident);
//printf("Obj::external('%s', %d)\n",s->Sident, obj.extidx + 1);
symbol_debug(s);
obj.reset_symbuf->write(&s, sizeof(s));
if (obj.extdatai + (IDMAX + IDOHD) + 3 > sizeof(obj.extdata))
Expand Down Expand Up @@ -2597,7 +2597,8 @@ int Obj::common_block(Symbol *s,int flag,targ_size_t size,targ_size_t count)
unsigned long length;
unsigned ti;

//dbg_printf("Obj::common_block('%s',%d,%d,%d)\n",s->Sident,flag,size,count);
//printf("Obj::common_block('%s',%d,%d,%d, %d)\n",s->Sident,flag,size,count, obj.extidx + 1);
obj.reset_symbuf->write(&s, sizeof(s));
outextdata(); // borrow the extdata[] storage
i = Obj::mangle(s,obj.extdata);

Expand Down Expand Up @@ -3405,7 +3406,10 @@ int Obj::reftoident(int seg,targ_size_t offset,Symbol *s,targ_size_t val,
{ external = s->Sxtrnnum;
#ifdef DEBUG
if (external > obj.extidx)
{
printf("obj.extidx = %d\n", obj.extidx);
symbol_print(s);
}
#endif
assert(external <= obj.extidx);
}
Expand Down
6 changes: 6 additions & 0 deletions test/compilable/extra-files/test16080b.d
@@ -0,0 +1,6 @@
import imp16080;

void test2() {
A!() v = A!().a;
}

4 changes: 4 additions & 0 deletions test/compilable/imports/imp16080.d
@@ -0,0 +1,4 @@
struct A() {
static immutable A a;
}

6 changes: 6 additions & 0 deletions test/compilable/test16080.d
@@ -0,0 +1,6 @@
// REQUIRED_ARGS: -lib -Icompilable/imports
// EXTRA_SOURCES: extra-files/test16080b.d
// https://issues.dlang.org/show_bug.cgi?id=16080

import imp16080;

0 comments on commit a80eb25

Please sign in to comment.