patch 8.1.1791: 'completeslash' also applies to globpath()

Problem:    'completeslash' also applies to globpath().
Solution:   Add the WILD_IGNORE_COMPLETESLASH flag. (test by Yasuhiro
            Matsumoto, closes #4760)
diff --git a/src/evalfunc.c b/src/evalfunc.c
index 7eff7ad..54fc2f5 100644
--- a/src/evalfunc.c
+++ b/src/evalfunc.c
@@ -5878,15 +5878,15 @@
     static void
 f_globpath(typval_T *argvars, typval_T *rettv)
 {
-    int		flags = 0;
+    int		flags = WILD_IGNORE_COMPLETESLASH;
     char_u	buf1[NUMBUFLEN];
     char_u	*file = tv_get_string_buf_chk(&argvars[1], buf1);
     int		error = FALSE;
     garray_T	ga;
     int		i;
 
-    /* When the optional second argument is non-zero, don't remove matches
-    * for 'wildignore' and don't put matches for 'suffixes' at the end. */
+    // When the optional second argument is non-zero, don't remove matches
+    // for 'wildignore' and don't put matches for 'suffixes' at the end.
     rettv->v_type = VAR_STRING;
     if (argvars[2].v_type != VAR_UNKNOWN)
     {
diff --git a/src/ex_getln.c b/src/ex_getln.c
index 7ef304d..0e5d2ba 100644
--- a/src/ex_getln.c
+++ b/src/ex_getln.c
@@ -5032,7 +5032,7 @@
     char_u	*pat,
     int		*num_file,
     char_u	***file,
-    int		options)  /* EW_ flags */
+    int		options)  // WILD_ flags
 {
 #ifdef FEAT_CMDL_COMPL
     regmatch_T	regmatch;
@@ -5096,7 +5096,7 @@
 	if (free_pat)
 	    vim_free(pat);
 #ifdef BACKSLASH_IN_FILENAME
-	if (p_csl[0] != NUL)
+	if (p_csl[0] != NUL && (options & WILD_IGNORE_COMPLETESLASH) == 0)
 	{
 	    int	    i;
 
diff --git a/src/testdir/test_ins_complete.vim b/src/testdir/test_ins_complete.vim
index fedb38a..e48a72c 100644
--- a/src/testdir/test_ins_complete.vim
+++ b/src/testdir/test_ins_complete.vim
@@ -1,3 +1,4 @@
+source check.vim
 
 " Test for insert expansion
 func Test_ins_complete()
@@ -334,15 +335,11 @@
 
 " Test for insert path completion with completeslash option
 func Test_ins_completeslash()
-  if !has('win32')
-    throw 'Skipped: only works on MS-Windows'
-  endif
+  CheckMSWindows
   
   call mkdir('Xdir')
-
   let orig_shellslash = &shellslash
   set cpt&
-
   new
   
   set noshellslash
@@ -375,6 +372,11 @@
   %bw!
   call delete('Xdir', 'rf')
 
+  set noshellslash
+  set completeslash=slash
+  call assert_true(stridx(globpath(&rtp, 'syntax/*.vim', 1, 1)[0], '\') != -1)
+
   let &shellslash = orig_shellslash
+  set completeslash=
 endfunc
 
diff --git a/src/version.c b/src/version.c
index 81f59f9..e93ef43 100644
--- a/src/version.c
+++ b/src/version.c
@@ -774,6 +774,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1791,
+/**/
     1790,
 /**/
     1789,
diff --git a/src/vim.h b/src/vim.h
index 99ffc10..6f7a11d 100644
--- a/src/vim.h
+++ b/src/vim.h
@@ -785,16 +785,17 @@
 #define WILD_LONGEST		7
 #define WILD_ALL_KEEP		8
 
-#define WILD_LIST_NOTFOUND	0x01
-#define WILD_HOME_REPLACE	0x02
-#define WILD_USE_NL		0x04
-#define WILD_NO_BEEP		0x08
-#define WILD_ADD_SLASH		0x10
-#define WILD_KEEP_ALL		0x20
-#define WILD_SILENT		0x40
-#define WILD_ESCAPE		0x80
-#define WILD_ICASE		0x100
-#define WILD_ALLLINKS		0x200
+#define WILD_LIST_NOTFOUND	    0x01
+#define WILD_HOME_REPLACE	    0x02
+#define WILD_USE_NL		    0x04
+#define WILD_NO_BEEP		    0x08
+#define WILD_ADD_SLASH		    0x10
+#define WILD_KEEP_ALL		    0x20
+#define WILD_SILENT		    0x40
+#define WILD_ESCAPE		    0x80
+#define WILD_ICASE		    0x100
+#define WILD_ALLLINKS		    0x200
+#define WILD_IGNORE_COMPLETESLASH   0x400
 
 // Flags for expand_wildcards()
 #define EW_DIR		0x01	// include directory names