diff --git a/src/popupwin.c b/src/popupwin.c
index 863439e..5b346ac 100644
--- a/src/popupwin.c
+++ b/src/popupwin.c
@@ -2531,8 +2531,9 @@
 /*
  * Close a popup window by Window-id.
  * Does not invoke the callback.
+ * Return OK if the popup was closed, FAIL otherwise.
  */
-    void
+    int
 popup_close(int id)
 {
     win_T	*wp;
@@ -2546,25 +2547,27 @@
 	    if (wp == curwin)
 	    {
 		error_for_popup_window();
-		return;
+		return FAIL;
 	    }
 	    if (prev == NULL)
 		first_popupwin = wp->w_next;
 	    else
 		prev->w_next = wp->w_next;
 	    popup_free(wp);
-	    return;
+	    return OK;
 	}
 
     // go through tab-local popups
     FOR_ALL_TABPAGES(tp)
-	popup_close_tabpage(tp, id);
+	if (popup_close_tabpage(tp, id) == OK)
+	    return OK;
+    return FAIL;
 }
 
 /*
  * Close a popup window with Window-id "id" in tabpage "tp".
  */
-    void
+    int
 popup_close_tabpage(tabpage_T *tp, int id)
 {
     win_T	*wp;
@@ -2577,15 +2580,16 @@
 	    if (wp == curwin)
 	    {
 		error_for_popup_window();
-		return;
+		return FAIL;
 	    }
 	    if (prev == NULL)
 		*root = wp->w_next;
 	    else
 		prev->w_next = wp->w_next;
 	    popup_free(wp);
-	    return;
+	    return OK;
 	}
+    return FAIL;
 }
 
     void
@@ -2594,9 +2598,11 @@
     if (ERROR_IF_ANY_POPUP_WINDOW)
 	return;
     while (first_popupwin != NULL)
-	popup_close(first_popupwin->w_id);
+	if (popup_close(first_popupwin->w_id) == FAIL)
+	    return;
     while (curtab->tp_first_popupwin != NULL)
-	popup_close(curtab->tp_first_popupwin->w_id);
+	if (popup_close(curtab->tp_first_popupwin->w_id) == FAIL)
+	    return;
 }
 
 /*
diff --git a/src/proto/popupwin.pro b/src/proto/popupwin.pro
index 96b21b6..0147e68 100644
--- a/src/proto/popupwin.pro
+++ b/src/proto/popupwin.pro
@@ -34,8 +34,8 @@
 void f_popup_show(typval_T *argvars, typval_T *rettv);
 void f_popup_settext(typval_T *argvars, typval_T *rettv);
 int error_if_popup_window(int also_with_term);
-void popup_close(int id);
-void popup_close_tabpage(tabpage_T *tp, int id);
+int popup_close(int id);
+int popup_close_tabpage(tabpage_T *tp, int id);
 void close_all_popups(void);
 void f_popup_move(typval_T *argvars, typval_T *rettv);
 void f_popup_setoptions(typval_T *argvars, typval_T *rettv);
diff --git a/src/version.c b/src/version.c
index aa88847..37548b2 100644
--- a/src/version.c
+++ b/src/version.c
@@ -747,6 +747,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    746,
+/**/
     745,
 /**/
     744,
