Mercurial > vim
changeset 30497:1b9abc263eb3 v9.0.0584
patch 9.0.0584: cscope test with wrong executable name fails
Commit: https://github.com/vim/vim/commit/dc21552c9a83413a018a91e61649cc632929d6a1
Author: Bram Moolenaar <Bram@vim.org>
Date: Sun Sep 25 17:03:26 2022 +0100
patch 9.0.0584: cscope test with wrong executable name fails
Problem: Cscope test with wrong executable name fails.
Solution: Use /bin/sh to execute the command. (Yegappan Lakshmanan)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sun, 25 Sep 2022 18:15:03 +0200 |
parents | 4dee284c6ccd |
children | e376c8ad26fe |
files | src/if_cscope.c src/testdir/test_cscope.vim src/version.c |
diffstat | 3 files changed, 23 insertions(+), 20 deletions(-) [+] |
line wrap: on
line diff
--- a/src/if_cscope.c +++ b/src/if_cscope.c @@ -799,7 +799,7 @@ cs_create_cmd(char *csoption, char *patt 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
--- 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