diff options
author | Eliseo Martínez <eliseomarmol@gmail.com> | 2014-11-16 19:35:46 +0100 |
---|---|---|
committer | Eliseo Martínez <eliseomarmol@gmail.com> | 2014-11-18 21:57:48 +0100 |
commit | d3f413ba6a4e9fc36712f787bc120eb028f39cae (patch) | |
tree | 0cde18f0b02fe7ea5c44935da078341d440b1068 /src | |
parent | f47d52ea4f260ad07e2eed8c7c2ae39a484dc282 (diff) | |
download | rneovim-d3f413ba6a4e9fc36712f787bc120eb028f39cae.tar.gz rneovim-d3f413ba6a4e9fc36712f787bc120eb028f39cae.tar.bz2 rneovim-d3f413ba6a4e9fc36712f787bc120eb028f39cae.zip |
Fix warnings: eval.c: set_var_lval(): Np dereference: FP.
Problem : Dereference of null pointer @ 2273.
Diagnostic : False positive.
Rationale : Suggested error would happen when assigning an rvalue with
more items than the lvalue. Then we would enter conditional
at:
```
if (lp->ll_li->li_next == NULL) {
/* Need to add an empty item. */
list_append_number(lp->ll_list, 0);
}
lp->ll_li = lp->ll_li->li_next;
```
Analyzer thinks the value assigned to lp->ll_li is still
NULL and is hit on the next iteration.
Resolution : Assert lp->ll_li->li_next is not null anymore after
list_append_number().
Diffstat (limited to 'src')
-rw-r--r-- | src/nvim/eval.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/src/nvim/eval.c b/src/nvim/eval.c index 498795dc38..d7f820ae78 100644 --- a/src/nvim/eval.c +++ b/src/nvim/eval.c @@ -2272,6 +2272,7 @@ static void set_var_lval(lval_T *lp, char_u *endp, typval_T *rettv, int copy, ch if (lp->ll_li->li_next == NULL) { /* Need to add an empty item. */ list_append_number(lp->ll_list, 0); + assert(lp->ll_li->li_next); } lp->ll_li = lp->ll_li->li_next; ++lp->ll_n1; |