patch 8.1.2250: CTRL-U and CTRL-D don't work in popup window

Problem:    CTRL-U and CTRL-D don't work in popup window.
Solution:   Initialize 'scroll'.  Add "lastline" in popup_getpos().
            (closes #5170)
diff --git a/src/popupwin.c b/src/popupwin.c
index d6e6207..ddb1254 100644
--- a/src/popupwin.c
+++ b/src/popupwin.c
@@ -1373,6 +1373,8 @@
 	wp->w_height = wp->w_maxheight;
     if (wp->w_height > Rows - wp->w_winrow)
 	wp->w_height = Rows - wp->w_winrow;
+    if (wp->w_height != org_height)
+	win_comp_scroll(wp);
 
     if (center_vert)
     {
@@ -2500,6 +2502,7 @@
 
 	dict_add_number(dict, "scrollbar", wp->w_has_scrollbar);
 	dict_add_number(dict, "firstline", wp->w_topline);
+	dict_add_number(dict, "lastline", wp->w_botline - 1);
 	dict_add_number(dict, "visible",
 		      win_valid(wp) && (wp->w_popup_flags & POPF_HIDDEN) == 0);
 
diff --git a/src/testdir/test_popupwin.vim b/src/testdir/test_popupwin.vim
index 2c4da0b..e38b721 100644
--- a/src/testdir/test_popupwin.vim
+++ b/src/testdir/test_popupwin.vim
@@ -142,6 +142,7 @@
 	\ height: 3,
 	\ core_height: 1,
 	\ firstline: 1,
+	\ lastline: 1,
 	\ scrollbar: 0,
 	\ visible: 1}
   let winid = popup_create('hello border', #{line: 2, col: 3, border: []})",
@@ -186,6 +187,7 @@
 	\ scrollbar: 0,
 	\ core_height: 1,
 	\ firstline: 1,
+	\ lastline: 1,
 	\ visible: 1}, popup_getpos(winid))
 
   call popup_clear()
@@ -385,6 +387,24 @@
   call assert_equal(0, popup_getoptions(winid).firstline)
   call assert_equal(10, popup_getpos(winid).firstline)
 
+  " CTRL-D scrolls down half a page
+  let winid = popup_create(['xxx']->repeat(50), #{
+	\ maxheight: 8,
+	\ })
+  redraw
+  call assert_equal(1, popup_getpos(winid).firstline)
+  call win_execute(winid, "normal! \<C-D>")
+  call assert_equal(5, popup_getpos(winid).firstline)
+  call win_execute(winid, "normal! \<C-D>")
+  call assert_equal(9, popup_getpos(winid).firstline)
+  call win_execute(winid, "normal! \<C-U>")
+  call assert_equal(5, popup_getpos(winid).firstline)
+
+  call win_execute(winid, "normal! \<C-F>")
+  call assert_equal(11, popup_getpos(winid).firstline)
+  call win_execute(winid, "normal! \<C-B>")
+  call assert_equal(5, popup_getpos(winid).firstline)
+
   call popup_close(winid)
 endfunc
 
@@ -1795,6 +1815,7 @@
 	    \ minheight: 4,
 	    \ maxheight: 4,
 	    \ firstline: 1,
+	    \ lastline: 4,
 	    \ wrap: v:true,
 	    \ scrollbar: v:true,
 	    \ mapping: v:false,
diff --git a/src/version.c b/src/version.c
index 0418204..5a4a1e4 100644
--- a/src/version.c
+++ b/src/version.c
@@ -742,6 +742,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    2250,
+/**/
     2249,
 /**/
     2248,