Index: generic/tclExecute.c
===================================================================
RCS file: /cvsroot/tcl/tcl/generic/tclExecute.c,v
retrieving revision 1.397
diff -u -r1.397 tclExecute.c
--- generic/tclExecute.c	4 Aug 2008 18:32:29 -0000	1.397
+++ generic/tclExecute.c	5 Aug 2008 15:32:30 -0000
@@ -2712,7 +2712,8 @@
 
 	    DECACHE_STACK_INFO();
 
-	    result = TclNREvalObjv(interp, objc, objv, TCL_EVAL_NOERR, NULL);
+	    result = TclNREvalObjv(interp, objc, objv,
+		    (*pc == INST_EVAL_STK) ? 0 : TCL_EVAL_NOERR, NULL);
 	    result = TclNRRunCallbacks(interp, result, bottomPtr->rootPtr, 1);
 	    CACHE_STACK_INFO();
 
Index: tests/execute.test
===================================================================
RCS file: /cvsroot/tcl/tcl/tests/execute.test,v
retrieving revision 1.28
diff -u -r1.28 execute.test
--- tests/execute.test	4 Aug 2008 04:49:24 -0000	1.28
+++ tests/execute.test	5 Aug 2008 15:32:30 -0000
@@ -958,6 +958,21 @@
     rename FOO {}
 } -result {}
 
+test execute-8.5 {Bug 2038069} -setup {
+    proc demo {} {
+	catch [list error FOO] m o
+	return $o
+    }
+} -body {
+    demo
+} -cleanup {
+    rename demo {}
+} -result {-code 1 -level 0 -errorcode NONE -errorinfo {FOO
+    while executing
+"error FOO"
+    invoked from within
+"catch [list error FOO] m o"} -errorline 2}
+
 test execute-9.1 {Interp result resetting [Bug 1522803]} {
     set c 0
     catch {
