Mercurial > vim
comparison src/regexp.c @ 14358:72d506d94f3f v8.1.0194
patch 8.1.0194: possibly use of NULL pointer
commit https://github.com/vim/vim/commit/414998023fbff15cce20ef01a54d0366370ad8b6
Author: Bram Moolenaar <Bram@vim.org>
Date: Wed Jul 18 06:02:09 2018 +0200
patch 8.1.0194: possibly use of NULL pointer
Problem: Possibly use of NULL pointer. (Coverity)
Solution: Reset the re_in_use flag earlier.
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Wed, 18 Jul 2018 06:15:04 +0200 |
parents | ffd834f893aa |
children | 27b9a84395b5 |
comparison
equal
deleted
inserted
replaced
14357:2144c5e79a7c | 14358:72d506d94f3f |
---|---|
8264 rex.reg_endp = NULL; | 8264 rex.reg_endp = NULL; |
8265 rex.reg_startpos = NULL; | 8265 rex.reg_startpos = NULL; |
8266 rex.reg_endpos = NULL; | 8266 rex.reg_endpos = NULL; |
8267 | 8267 |
8268 result = rmp->regprog->engine->regexec_nl(rmp, line, col, nl); | 8268 result = rmp->regprog->engine->regexec_nl(rmp, line, col, nl); |
8269 rmp->regprog->re_in_use = FALSE; | |
8269 | 8270 |
8270 /* NFA engine aborted because it's very slow. */ | 8271 /* NFA engine aborted because it's very slow. */ |
8271 if (rmp->regprog->re_engine == AUTOMATIC_ENGINE | 8272 if (rmp->regprog->re_engine == AUTOMATIC_ENGINE |
8272 && result == NFA_TOO_EXPENSIVE) | 8273 && result == NFA_TOO_EXPENSIVE) |
8273 { | 8274 { |
8282 #ifdef FEAT_EVAL | 8283 #ifdef FEAT_EVAL |
8283 report_re_switch(pat); | 8284 report_re_switch(pat); |
8284 #endif | 8285 #endif |
8285 rmp->regprog = vim_regcomp(pat, re_flags); | 8286 rmp->regprog = vim_regcomp(pat, re_flags); |
8286 if (rmp->regprog != NULL) | 8287 if (rmp->regprog != NULL) |
8288 { | |
8289 rmp->regprog->re_in_use = TRUE; | |
8287 result = rmp->regprog->engine->regexec_nl(rmp, line, col, nl); | 8290 result = rmp->regprog->engine->regexec_nl(rmp, line, col, nl); |
8291 rmp->regprog->re_in_use = FALSE; | |
8292 } | |
8288 vim_free(pat); | 8293 vim_free(pat); |
8289 } | 8294 } |
8290 | 8295 |
8291 p_re = save_p_re; | 8296 p_re = save_p_re; |
8292 } | 8297 } |
8293 | 8298 |
8294 rex_in_use = rex_in_use_save; | 8299 rex_in_use = rex_in_use_save; |
8295 if (rex_in_use) | 8300 if (rex_in_use) |
8296 rex = rex_save; | 8301 rex = rex_save; |
8297 rmp->regprog->re_in_use = FALSE; | |
8298 | 8302 |
8299 return result > 0; | 8303 return result > 0; |
8300 } | 8304 } |
8301 | 8305 |
8302 /* | 8306 /* |
8380 rex_save = rex; | 8384 rex_save = rex; |
8381 rex_in_use = TRUE; | 8385 rex_in_use = TRUE; |
8382 | 8386 |
8383 result = rmp->regprog->engine->regexec_multi( | 8387 result = rmp->regprog->engine->regexec_multi( |
8384 rmp, win, buf, lnum, col, tm, timed_out); | 8388 rmp, win, buf, lnum, col, tm, timed_out); |
8389 rmp->regprog->re_in_use = FALSE; | |
8385 | 8390 |
8386 /* NFA engine aborted because it's very slow. */ | 8391 /* NFA engine aborted because it's very slow. */ |
8387 if (rmp->regprog->re_engine == AUTOMATIC_ENGINE | 8392 if (rmp->regprog->re_engine == AUTOMATIC_ENGINE |
8388 && result == NFA_TOO_EXPENSIVE) | 8393 && result == NFA_TOO_EXPENSIVE) |
8389 { | 8394 { |
8407 #ifdef FEAT_SYN_HL | 8412 #ifdef FEAT_SYN_HL |
8408 reg_do_extmatch = 0; | 8413 reg_do_extmatch = 0; |
8409 #endif | 8414 #endif |
8410 | 8415 |
8411 if (rmp->regprog != NULL) | 8416 if (rmp->regprog != NULL) |
8417 { | |
8418 rmp->regprog->re_in_use = TRUE; | |
8412 result = rmp->regprog->engine->regexec_multi( | 8419 result = rmp->regprog->engine->regexec_multi( |
8413 rmp, win, buf, lnum, col, tm, timed_out); | 8420 rmp, win, buf, lnum, col, tm, timed_out); |
8421 rmp->regprog->re_in_use = FALSE; | |
8422 } | |
8414 vim_free(pat); | 8423 vim_free(pat); |
8415 } | 8424 } |
8416 p_re = save_p_re; | 8425 p_re = save_p_re; |
8417 } | 8426 } |
8418 | 8427 |
8419 rex_in_use = rex_in_use_save; | 8428 rex_in_use = rex_in_use_save; |
8420 if (rex_in_use) | 8429 if (rex_in_use) |
8421 rex = rex_save; | 8430 rex = rex_save; |
8422 rmp->regprog->re_in_use = FALSE; | |
8423 | 8431 |
8424 return result <= 0 ? 0 : result; | 8432 return result <= 0 ? 0 : result; |
8425 } | 8433 } |