mirror of
https://github.com/neovim/neovim.git
synced 2025-09-09 21:08:17 +00:00
Fix warnings: syntax.c: get_id_list(): Double free: FP.
Problem : Double free @ 5213. Diagnostic : False positive. Rationale : Suggested error path contains two consecutive invocations of `ends_excmd(*p)` having different results, which is not possible. First invocation is before the while loop. Second invocation is the while loop condition itsef. Resolution : Refactor while loop into do-while loop. That removes the impossible path from analysis, and, in addition, is a bit more efficient.
This commit is contained in:
@@ -5106,7 +5106,7 @@ get_id_list (
|
||||
* parse the arguments after "contains"
|
||||
*/
|
||||
count = 0;
|
||||
while (!ends_excmd(*p)) {
|
||||
do {
|
||||
for (end = p; *end && !vim_iswhite(*end) && *end != ','; ++end)
|
||||
;
|
||||
name = xmalloc((int)(end - p + 3)); /* leave room for "^$" */
|
||||
@@ -5199,7 +5199,7 @@ get_id_list (
|
||||
if (*p != ',')
|
||||
break;
|
||||
p = skipwhite(p + 1); /* skip comma in between arguments */
|
||||
}
|
||||
} while (!ends_excmd(*p));
|
||||
if (failed)
|
||||
break;
|
||||
if (round == 1) {
|
||||
|
Reference in New Issue
Block a user