Index: tests/exceptions/.expect/trash.txt
===================================================================
--- tests/exceptions/.expect/trash.txt	(revision b353a490febfa5afe3dcf8edf88ecebd8b6e0551)
+++ tests/exceptions/.expect/trash.txt	(revision b353a490febfa5afe3dcf8edf88ecebd8b6e0551)
@@ -0,0 +1,2 @@
+inner yang
+outer yin
Index: tests/exceptions/trash.cfa
===================================================================
--- tests/exceptions/trash.cfa	(revision b353a490febfa5afe3dcf8edf88ecebd8b6e0551)
+++ tests/exceptions/trash.cfa	(revision b353a490febfa5afe3dcf8edf88ecebd8b6e0551)
@@ -0,0 +1,27 @@
+// Make sure throw-catch during unwind does not trash internal data.
+
+#include <exception.hfa>
+#include <stdio.h>
+
+TRIVIAL_EXCEPTION(yin);
+TRIVIAL_EXCEPTION(yang);
+
+int main(int argc, char * argv[]) {
+	try {
+		try {
+			throw (yin){};
+		} finally {
+			try {
+				throw (yang){};
+			} catch (yin *) {
+				printf("inner yin\n");
+			} catch (yang *) {
+				printf("inner yang\n");
+			}
+		}
+	} catch (yin *) {
+		printf("outer yin\n");
+	} catch (yang *) {
+		printf("outer yang\n");
+	}
+}
