Jacek Caban : conhost: Fix wrapping search in edit_line_find_in_history.

Alexandre Julliard julliard at winehq.org
Mon Jan 4 15:37:51 CST 2021


Module: wine
Branch: master
Commit: 105db4c5381c1ab6e5a2542b6aa7d7a2f1bdaf81
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=105db4c5381c1ab6e5a2542b6aa7d7a2f1bdaf81

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Mon Jan  4 21:13:50 2021 +0100

conhost: Fix wrapping search in edit_line_find_in_history.

Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=50000
Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 programs/conhost/conhost.c | 45 +++++++++++++++++++++++----------------------
 1 file changed, 23 insertions(+), 22 deletions(-)

diff --git a/programs/conhost/conhost.c b/programs/conhost/conhost.c
index 3e41577a44b..0ac1c5f507b 100644
--- a/programs/conhost/conhost.c
+++ b/programs/conhost/conhost.c
@@ -691,6 +691,7 @@ static void edit_line_find_in_history( struct console *console )
     unsigned int len, oldoffset;
     WCHAR *line;
 
+    if (!console->history_index) return;
     if (ctx->history_index && ctx->history_index == console->history_index)
     {
         start_pos--;
@@ -699,28 +700,28 @@ static void edit_line_find_in_history( struct console *console )
 
     do
     {
-       line = edit_line_history(console, ctx->history_index);
-
-       if (ctx->history_index) ctx->history_index--;
-       else ctx->history_index = console->history_index;
-
-       len = lstrlenW(line) + 1;
-       if (len >= ctx->cursor && !memcmp( ctx->buf, line, ctx->cursor * sizeof(WCHAR) ))
-       {
-           /* need to clean also the screen if new string is shorter than old one */
-           edit_line_delete(console, 0, ctx->len);
-
-           if (edit_line_grow(console, len))
-           {
-              oldoffset = ctx->cursor;
-              ctx->cursor = 0;
-              edit_line_insert( console, line, len - 1 );
-              ctx->cursor = oldoffset;
-              free(line);
-              return;
-           }
-       }
-       free(line);
+        line = edit_line_history(console, ctx->history_index);
+
+        if (ctx->history_index) ctx->history_index--;
+        else ctx->history_index = console->history_index - 1;
+
+        len = lstrlenW(line) + 1;
+        if (len >= ctx->cursor && !memcmp( ctx->buf, line, ctx->cursor * sizeof(WCHAR) ))
+        {
+            /* need to clean also the screen if new string is shorter than old one */
+            edit_line_delete(console, 0, ctx->len);
+
+            if (edit_line_grow(console, len))
+            {
+                oldoffset = ctx->cursor;
+                ctx->cursor = 0;
+                edit_line_insert( console, line, len - 1 );
+                ctx->cursor = oldoffset;
+                free(line);
+                return;
+            }
+        }
+        free(line);
     }
     while (ctx->history_index != start_pos);
 }




More information about the wine-cvs mailing list