diff --git a/src/nano.c b/src/nano.c index f87e67318b2230bf66125136403bdb3b8dd52bb1..639afaa57df72da1659aaea7a76c17d6887c43e3 100644 --- a/src/nano.c +++ b/src/nano.c @@ -344,23 +344,24 @@ void move_to_filestruct(filestruct **file_top, filestruct **file_bot, renumber(file_bot_save->next); } - /* Since the text has now been saved, remove it from the filestruct. - * If the mark begins inside the partition, set the beginning of the - * mark to where the saved text used to start. */ + /* Since the text has now been saved, remove it from the + * filestruct. */ openfile->fileage = (filestruct *)nmalloc(sizeof(filestruct)); openfile->fileage->data = mallocstrcpy(NULL, ""); openfile->filebot = openfile->fileage; + + /* Restore the current line and cursor position. If the mark begins + * inside the partition, set the beginning of the mark to where the + * saved text used to start. */ + openfile->current = openfile->fileage; + openfile->current_x = top_x; #ifndef NANO_TINY if (mark_inside) { - openfile->mark_begin = openfile->fileage; - openfile->mark_begin_x = top_x; + openfile->mark_begin = openfile->current; + openfile->mark_begin_x = openfile->current_x; } #endif - /* Restore the current line and cursor position. */ - openfile->current = openfile->fileage; - openfile->current_x = top_x; - top_save = openfile->fileage; /* Unpartition the filestruct so that it contains all the text