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);