diff options
author | Bram Moolenaar <Bram@vim.org> | 2022-09-25 17:03:26 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2022-09-25 17:03:26 +0100 |
commit | dc21552c9a83413a018a91e61649cc632929d6a1 (patch) | |
tree | 79f94e1c0409b24c18196449e2a0ec2ed4f0f3d3 /src | |
parent | b9725bc7f6427654eb4e35874034b0ec1b6b96b3 (diff) |
patch 9.0.0584: cscope test with wrong executable name failsv9.0.0584
Problem: Cscope test with wrong executable name fails.
Solution: Use /bin/sh to execute the command. (Yegappan Lakshmanan)
Diffstat (limited to 'src')
-rw-r--r-- | src/if_cscope.c | 27 | ||||
-rw-r--r-- | src/testdir/test_cscope.vim | 14 | ||||
-rw-r--r-- | src/version.c | 2 |
3 files changed, 23 insertions, 20 deletions
diff --git a/src/if_cscope.c b/src/if_cscope.c index 945b019a30..ad29fb9f50 100644 --- a/src/if_cscope.c +++ b/src/if_cscope.c @@ -799,7 +799,7 @@ cs_create_cmd(char *csoption, char *pattern) return NULL; } - // Skip white space before the patter, except for text and pattern search, + // Skip white space before the pattern, except for text and pattern search, // they may want to use the leading white space. pat = pattern; if (search != 4 && search != 6) @@ -825,6 +825,7 @@ cs_create_connection(int i) #ifdef UNIX int to_cs[2], from_cs[2]; #endif + int cmdlen; int len; char *prog, *cmd, *ppath = NULL; #ifdef MSWIN @@ -917,7 +918,7 @@ err_closing: expand_env(p_csprg, (char_u *)prog, MAXPATHL); // alloc space to hold the cscope command - len = (int)(strlen(prog) + strlen(csinfo[i].fname) + 32); + cmdlen = (int)(strlen(prog) + strlen(csinfo[i].fname) + 32); if (csinfo[i].ppath) { // expand the prepend path for env var's @@ -933,13 +934,13 @@ err_closing: } expand_env((char_u *)csinfo[i].ppath, (char_u *)ppath, MAXPATHL); - len += (int)strlen(ppath); + cmdlen += (int)strlen(ppath); } if (csinfo[i].flags) - len += (int)strlen(csinfo[i].flags); + cmdlen += (int)strlen(csinfo[i].flags); - if ((cmd = alloc(len)) == NULL) + if ((cmd = alloc(cmdlen)) == NULL) { vim_free(prog); vim_free(ppath); @@ -952,17 +953,21 @@ err_closing: } // run the cscope command - (void)sprintf(cmd, "%s -dl -f %s", prog, csinfo[i].fname); - +#ifdef UNIX + vim_snprintf(cmd, cmdlen, "/bin/sh -c \"exec %s -dl -f %s\"", + prog, csinfo[i].fname); +#else + vim_snprintf(cmd, cmdlen, "%s -dl -f %s", prog, csinfo[i].fname); +#endif if (csinfo[i].ppath != NULL) { - (void)strcat(cmd, " -P"); - (void)strcat(cmd, csinfo[i].ppath); + len = STRLEN(cmd); + vim_snprintf(cmd + len, cmdlen - len, " -P%s", csinfo[i].ppath); } if (csinfo[i].flags != NULL) { - (void)strcat(cmd, " "); - (void)strcat(cmd, csinfo[i].flags); + len = STRLEN(cmd); + vim_snprintf(cmd + len, cmdlen - len, " %s", csinfo[i].flags); } # ifdef UNIX // on Win32 we still need prog diff --git a/src/testdir/test_cscope.vim b/src/testdir/test_cscope.vim index 37ef1db680..b2ecdcc914 100644 --- a/src/testdir/test_cscope.vim +++ b/src/testdir/test_cscope.vim @@ -241,15 +241,11 @@ func Test_cscopeWithCscopeConnections() let a = execute('cscope kill -1') call assert_equal('', a) - " Test: 'csprg' option - " Skip this with valgrind, it causes spurious leak reports - " FIXME: this causes failures when timers are used - if !RunningWithValgrind() && 0 - call assert_equal('cscope', &csprg) - set csprg=doesnotexist - call assert_fails('cscope add Xcscope2.out', 'E262:') - set csprg=cscope - endif + " Test: 'csprg' option invalid command + call assert_equal('cscope', &csprg) + set csprg=doesnotexist + call assert_fails('cscope add Xcscope2.out', 'E609:') + set csprg=cscope " Test: multiple cscope connections cscope add Xcscope.out diff --git a/src/version.c b/src/version.c index fdd6a239f6..9740201f2a 100644 --- a/src/version.c +++ b/src/version.c @@ -700,6 +700,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 584, +/**/ 583, /**/ 582, |