Index: tests/exceptions/message.cfa
===================================================================
--- tests/exceptions/message.cfa	(revision d84f2ae33ff967a0dcd536586c44e74523d30775)
+++ tests/exceptions/message.cfa	(revision d6c59bce0af34706acc419cc2da88d01f9b2d2c9)
@@ -42,4 +42,19 @@
 }
 
+// Do not construct an exception without a vtable!
+void ?{}(BadIndexException&) = void;
+
+void ?{}(BadIndexException & this,
+		vtable(BadIndexException) & vt, int value, int size) {
+	this.virtual_table = &vt;
+	this.value = value;
+	this.size = size;
+	this.message = 0p;
+}
+
+void ?{}(BadIndexException & this, BadIndexException that) {
+	copy(&this, &that);
+}
+
 void ^?{}(BadIndexException & this) {
 	free(this.message);
@@ -54,5 +69,5 @@
 // This is not supposed to be a real range check, but that's the idea:
 void failRangeCheck(int index, int size) {
-	throw (BadIndexException){ &arrayIndex, index, size };
+	throw (BadIndexException){ arrayIndex, index, size };
 }
 
