Fix crash on clearing new Move List window
authorH.G. Muller <h.g.muller@hccnet.nl>
Sat, 18 Jun 2011 21:48:13 +0000 (23:48 +0200)
committerH.G. Muller <h.g.muller@hccnet.nl>
Tue, 21 Jun 2011 10:07:07 +0000 (12:07 +0200)
When a new game started and a previous game had filled the Move List
window, a crash occurred because an attempt was made to undo the
highlighting of a no-longer-existing move, and then scrolling to it.

history.c
xhistory.c

index 6773133..503f6a0 100644 (file)
--- a/history.c
+++ b/history.c
@@ -174,7 +174,7 @@ void MemoContentUpdated()
 {
     int caretPos;
 
 {
     int caretPos;
 
-    DoHighlight( lastCurrent, FALSE );
+    if(lastCurrent <= currLast) DoHighlight( lastCurrent, FALSE );
     DoHighlight( currCurrent, TRUE );
 
     lastFirst = currFirst;
     DoHighlight( currCurrent, TRUE );
 
     lastFirst = currFirst;
index 919ea9a..7dc3c9f 100644 (file)
@@ -101,7 +101,7 @@ void ScrollToCurrent(int caretPos)
     Arg args[10];
     char *s;
     GetWidgetText(&historyOptions[0], &s);
     Arg args[10];
     char *s;
     GetWidgetText(&historyOptions[0], &s);
-    if(caretPos < 0) caretPos = strlen(s);
+    if(caretPos < 0 || caretPos > strlen(s)) caretPos = strlen(s);
     XtSetArg(args[0], XtNdisplayCaret, False);
     XtSetArg(args[1], XtNinsertPosition, caretPos); // this triggers scrolling in Xaw
     XtSetValues(historyOptions[0].handle, args, 2);
     XtSetArg(args[0], XtNdisplayCaret, False);
     XtSetArg(args[1], XtNinsertPosition, caretPos); // this triggers scrolling in Xaw
     XtSetValues(historyOptions[0].handle, args, 2);