diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/nvim/if_cscope.c | 22 | 
1 files changed, 13 insertions, 9 deletions
| diff --git a/src/nvim/if_cscope.c b/src/nvim/if_cscope.c index 773e29693c..5bd1fdfcfb 100644 --- a/src/nvim/if_cscope.c +++ b/src/nvim/if_cscope.c @@ -549,7 +549,7 @@ static void cs_reading_emsg(  static int cs_cnt_matches(size_t idx)  {    char *stok; -  int nlines; +  int nlines = 0;    char *buf = xmalloc(CSREAD_BUFSIZE);    for (;; ) { @@ -569,16 +569,20 @@ static int cs_cnt_matches(size_t idx)        return CSCOPE_FAILURE;      } -    /* -     * If the database is out of date, or there's some other problem, -     * cscope will output error messages before the number-of-lines output. -     * Display/discard any output that doesn't match what we want. -     * Accept "\S*cscope: X lines", also matches "mlcscope". -     */ -    if ((stok = strtok(buf, (const char *)" ")) == NULL) +    // If the database is out of date, or there's some other problem, +    // cscope will output error messages before the number-of-lines output. +    // Display/discard any output that doesn't match what we want. +    // Accept "\S*cscope: X lines", also matches "mlcscope". +    // Bail out for the "Unable to search" error. +    if (strstr((const char *)stok, "Unable to search database") != NULL) { +        break; +    } +    if ((stok = strtok(buf, (const char *)" ")) == NULL) {        continue; -    if (strstr((const char *)stok, "cscope:") == NULL) +    } +    if (strstr((const char *)stok, "cscope:") == NULL) {        continue; +    }      if ((stok = strtok(NULL, (const char *)" ")) == NULL)        continue; | 
