lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


Coverity found a dereference of the variable fs, then a later null check of the same variable without an additional assignment:

356  	static void close_func (LexState *ls) {
357  	  lua_State *L = ls->L;
358  	  FuncState *fs = ls->fs;

Event deref_ptr: Directly dereferenced pointer "fs"
359  	  Proto *f = fs->f;

360  	  removevars(ls, 0);
361  	  luaK_ret(fs, 0, 0);  /* final return */
362  	  luaM_reallocvector(L, f->code, f->sizecode, fs->pc, Instruction);
363  	  f->sizecode = fs->pc;
364  	  luaM_reallocvector(L, f->lineinfo, f->sizelineinfo, fs->pc, int);
365  	  f->sizelineinfo = fs->pc;
366  	  luaM_reallocvector(L, f->k, f->sizek, fs->nk, TValue);
367  	  f->sizek = fs->nk;
368  	  luaM_reallocvector(L, f->p, f->sizep, fs->np, Proto *);
369  	  f->sizep = fs->np;
370  	  luaM_reallocvector(L, f->locvars, f->sizelocvars, fs->nlocvars, LocVar);
371  	  f->sizelocvars = fs->nlocvars;
372  	  luaM_reallocvector(L, f->upvalues, f->sizeupvalues, f->nups, TString *);
373  	  f->sizeupvalues = f->nups;
374  	  lua_assert(luaG_checkcode(f));
375  	  lua_assert(fs->bl == NULL);
376  	  ls->fs = fs->prev;
377  	  L->top -= 2;  /* remove table and prototype from the stack */
378  	  /* last token read was anchored in defunct function; must reanchor it */

Event check_after_deref: Pointer "fs" dereferenced before NULL check
379  	  if (fs) anchor_token(ls);

380  	}


Is it safe to remove this null check, or should the null check be moved to before line 359?

Thank you,

Jason Stern