Mercurial > projects > ldc
diff dmd/constfold.c @ 658:50383e476c7e
Upgraded frontend to DMD 1.035
author | Tomas Lindquist Olsen <tomas.l.olsen@gmail.com> |
---|---|
date | Mon, 06 Oct 2008 16:22:11 +0200 |
parents | 29dc68c949b0 |
children | a26b0c5d5942 |
line wrap: on
line diff
--- a/dmd/constfold.c Mon Oct 06 14:37:00 2008 +0200 +++ b/dmd/constfold.c Mon Oct 06 16:22:11 2008 +0200 @@ -706,7 +706,11 @@ { StringExp *es1 = (StringExp *)e1; StringExp *es2 = (StringExp *)e2; - assert(es1->sz == es2->sz); + if (es1->sz != es2->sz) + { + assert(global.errors); + return EXP_CANT_INTERPRET; + } if (es1->len == es2->len && memcmp(es1->string, es2->string, es1->sz * es1->len) == 0) cmp = 1; @@ -1344,7 +1348,14 @@ size_t len = es1->len + es2->len; int sz = es1->sz; - assert(sz == es2->sz); + if (sz != es2->sz) + { + /* Can happen with: + * auto s = "foo"d ~ "bar"c; + */ + assert(global.errors); + return e; + } s = mem.malloc((len + 1) * sz); memcpy(s, es1->string, es1->len * sz); memcpy((unsigned char *)s + es1->len * sz, es2->string, es2->len * sz);