diff --git a/src/evalfunc.c b/src/evalfunc.c
index 4c0347022..08ff6f9bb 100644
--- a/src/evalfunc.c
+++ b/src/evalfunc.c
@@ -5271,6 +5271,8 @@ f_getjumplist(typval_T *argvars, typval_T *rettv)
     if (wp == NULL)
 	return;
 
+    cleanup_jumplist(wp, TRUE);
+
     l = list_alloc();
     if (l == NULL)
 	return;
@@ -5279,8 +5281,6 @@ f_getjumplist(typval_T *argvars, typval_T *rettv)
 	return;
     list_append_number(rettv->vval.v_list, (varnumber_T)wp->w_jumplistidx);
 
-    cleanup_jumplist(wp, TRUE);
-
     for (i = 0; i < wp->w_jumplistlen; ++i)
     {
 	if (wp->w_jumplist[i].fmark.mark.lnum == 0)
diff --git a/src/testdir/test_jumplist.vim b/src/testdir/test_jumplist.vim
index 02dbd7619..d4cffbbc5 100644
--- a/src/testdir/test_jumplist.vim
+++ b/src/testdir/test_jumplist.vim
@@ -31,7 +31,7 @@ func Test_getjumplist()
   call assert_equal([[
 	      \ {'lnum': 1, 'bufnr': bnr, 'col': 0, 'coladd': 0},
 	      \ {'lnum': 50, 'bufnr': bnr, 'col': 0, 'coladd': 0},
-	      \ {'lnum': 100, 'bufnr': bnr, 'col': 0, 'coladd': 0}], 4],
+	      \ {'lnum': 100, 'bufnr': bnr, 'col': 0, 'coladd': 0}], 3],
 	      \ getjumplist())
 
   " Traverse the jump list and verify the results
@@ -48,7 +48,7 @@ func Test_getjumplist()
 	      \ {'lnum': 1, 'bufnr': bnr, 'col': 0, 'coladd': 0},
 	      \ {'lnum': 50, 'bufnr': bnr, 'col': 0, 'coladd': 0},
 	      \ {'lnum': 5, 'bufnr': bnr, 'col': 0, 'coladd': 0},
-	      \ {'lnum': 100, 'bufnr': bnr, 'col': 0, 'coladd': 0}], 5],
+	      \ {'lnum': 100, 'bufnr': bnr, 'col': 0, 'coladd': 0}], 4],
 	      \ getjumplist())
 
   let l = getjumplist()
