diff --git a/src/option.c b/src/option.c
index 5e215d5..e54ba4e 100644
--- a/src/option.c
+++ b/src/option.c
@@ -2245,7 +2245,7 @@
 #else
 			    (char_u *)NULL, PV_NONE,
 #endif
-			    {(char_u *)0L, (char_u *)0L} SCRIPTID_INIT},
+			    {(char_u *)15L, (char_u *)15L} SCRIPTID_INIT},
     {"pythonthreedll",  NULL,   P_STRING|P_EXPAND|P_VI_DEF|P_SECURE,
 #if defined(DYNAMIC_PYTHON3)
 			    (char_u *)&p_py3dll, PV_NONE,
diff --git a/src/popupmnu.c b/src/popupmnu.c
index f53649f..09d9520 100644
--- a/src/popupmnu.c
+++ b/src/popupmnu.c
@@ -67,15 +67,6 @@
 }
 
 /*
- * Return the minimum width of the popup menu.
- */
-    static int
-pum_get_width(void)
-{
-    return p_pw == 0 ? PUM_DEF_WIDTH : p_pw;
-}
-
-/*
  * Show the popup menu with items "array[size]".
  * "array" must remain valid until pum_undisplay() is called!
  * When possible the leftmost character is aligned with screen column "col".
@@ -102,7 +93,7 @@
 
     do
     {
-	def_width = pum_get_width();
+	def_width = p_pw;
 	above_row = 0;
 	below_row = cmdline_row;
 
@@ -225,10 +216,10 @@
 	if (def_width < max_width)
 	    def_width = max_width;
 
-	if (((col < Columns - pum_get_width() || col < Columns - max_width)
+	if (((col < Columns - p_pw || col < Columns - max_width)
 #ifdef FEAT_RIGHTLEFT
 		    && !curwin->w_p_rl)
-	       || (curwin->w_p_rl && (col > pum_get_width() || col > max_width)
+	       || (curwin->w_p_rl && (col > p_pw || col > max_width)
 #endif
 	   ))
 	{
@@ -244,17 +235,17 @@
 		pum_width = Columns - pum_col - pum_scrollbar;
 
 	    if (pum_width > max_width + pum_kind_width + pum_extra_width + 1
-						&& pum_width > pum_get_width())
+						&& pum_width > p_pw)
 	    {
 		/* the width is too much, make it narrower */
 		pum_width = max_width + pum_kind_width + pum_extra_width + 1;
-		if (pum_width < pum_get_width())
-		    pum_width = pum_get_width();
+		if (pum_width < p_pw)
+		    pum_width = p_pw;
 	    }
-	    else if (((col > pum_get_width() || col > max_width)
+	    else if (((col > p_pw || col > max_width)
 #ifdef FEAT_RIGHTLEFT
 			&& !curwin->w_p_rl)
-		|| (curwin->w_p_rl && (col < Columns - pum_get_width()
+		|| (curwin->w_p_rl && (col < Columns - p_pw
 			|| col < Columns - max_width)
 #endif
 		    ))
@@ -282,9 +273,9 @@
 #endif
 		    pum_width = pum_col - pum_scrollbar;
 
-		if (pum_width < pum_get_width())
+		if (pum_width < p_pw)
 		{
-		    pum_width = pum_get_width();
+		    pum_width = p_pw;
 #ifdef FEAT_RIGHTLEFT
 		    if (curwin->w_p_rl)
 		    {
@@ -300,12 +291,12 @@
 		}
 		else if (pum_width > max_width + pum_kind_width
 							  + pum_extra_width + 1
-			    && pum_width > pum_get_width())
+			    && pum_width > p_pw)
 		{
 		    pum_width = max_width + pum_kind_width
 							 + pum_extra_width + 1;
-		    if (pum_width < pum_get_width())
-			pum_width = pum_get_width();
+		    if (pum_width < p_pw)
+			pum_width = p_pw;
 		}
 	    }
 
@@ -323,8 +314,8 @@
 	}
 	else
 	{
-	    if (max_width > pum_get_width())
-		max_width = pum_get_width();	/* truncate */
+	    if (max_width > p_pw)
+		max_width = p_pw;	/* truncate */
 #ifdef FEAT_RIGHTLEFT
 	    if (curwin->w_p_rl)
 		pum_col = max_width - 1;
diff --git a/src/version.c b/src/version.c
index f5772a8..3a35475 100644
--- a/src/version.c
+++ b/src/version.c
@@ -772,6 +772,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1495,
+/**/
     1494,
 /**/
     1493,
