diff --git a/ChangeLog b/ChangeLog index c495de5cf08c623c59ad512fb63e7970685b6e8e..70f1b985dd164d4f8789331d8f9cff6919f49e57 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2016-01-25 Benno Schulenberg <bensberg@justemail.net> + * src/files.c (update_poshistory): Handle an update of the first + element correctly. + 2016-01-24 Benno Schulenberg <bensberg@justemail.net> * src/files.c (update_poshistory): Move an updated item to the end of the list, so that it won't be dropped any time soon. The problem diff --git a/src/files.c b/src/files.c index 51e9c9cfb1dcd17c916cedc70b9091ca501f0561..29e7ab6c862ce813c02287a87138f1dd81236384 100644 --- a/src/files.c +++ b/src/files.c @@ -3208,7 +3208,10 @@ void update_poshistory(char *filename, ssize_t lineno, ssize_t xpos) else posprev->next = theone; } else if (posptr->next != NULL) { - posprev->next = posptr->next; + if (posprev == NULL) + position_history = posptr->next; + else + posprev->next = posptr->next; while (posptr->next != NULL) posptr = posptr->next; posptr->next = theone;