From cdef186c11f4b0a1af6d97a74387d2f062f86f21 Mon Sep 17 00:00:00 2001
From: Jan Lahoda <jlahoda@openjdk.org>
Date: Thu, 5 Nov 2020 09:12:07 +0000
Subject: [PATCH] 8232856: jshell crashes when pressing up arrow after /!

Reviewed-by: psandoz
---
 .../jdk/internal/jshell/tool/ConsoleIOContext.java |  1 +
 test/langtools/jdk/jshell/HistoryUITest.java       | 14 +++++++++++++-
 2 files changed, 14 insertions(+), 1 deletion(-)

diff --git a/src/jdk.jshell/share/classes/jdk/internal/jshell/tool/ConsoleIOContext.java b/src/jdk.jshell/share/classes/jdk/internal/jshell/tool/ConsoleIOContext.java
index 0d99cc3b0b2..610404b8738 100644
--- a/src/jdk.jshell/share/classes/jdk/internal/jshell/tool/ConsoleIOContext.java
+++ b/src/jdk.jshell/share/classes/jdk/internal/jshell/tool/ConsoleIOContext.java
@@ -833,6 +833,7 @@ class ConsoleIOContext extends IOContext {
         }
         it.remove();
         in.getHistory().add(source);
+        in.getHistory().resetIndex();
     }
 
     private static final long ESCAPE_TIMEOUT = 100;
diff --git a/test/langtools/jdk/jshell/HistoryUITest.java b/test/langtools/jdk/jshell/HistoryUITest.java
index 307c087409b..04b8e825862 100644
--- a/test/langtools/jdk/jshell/HistoryUITest.java
+++ b/test/langtools/jdk/jshell/HistoryUITest.java
@@ -23,7 +23,7 @@
 
 /**
  * @test
- * @bug 8178077
+ * @bug 8178077 8232856
  * @summary Check the UI behavior of editing history.
  * @modules
  *     jdk.compiler/com.sun.tools.javac.api
@@ -77,4 +77,16 @@ public class HistoryUITest extends UITesting {
         });
     }
 
+    public void testReRun() throws Exception {
+        doRunTest((inputSink, out) -> {
+            inputSink.write("System.err.println(\"RAN\");\n");
+            waitOutput(out, "RAN.*" + PROMPT);
+            inputSink.write("/!\n");
+            waitOutput(out, "RAN.*" + PROMPT);
+            inputSink.write(UP);
+            inputSink.write("\n");
+            waitOutput(out, "RAN.*" + PROMPT);
+        });
+    }
+
 }