diff --git a/src/blua/lvm.c b/src/blua/lvm.c index a921d443..b654613f 100644 --- a/src/blua/lvm.c +++ b/src/blua/lvm.c @@ -732,7 +732,8 @@ void luaV_execute (lua_State *L, int nexeccalls) { luaG_runerror(L, LUA_QL("for") " limit must be a number"); else if (!tonumber(pstep, ra+2)) luaG_runerror(L, LUA_QL("for") " step must be a number"); - setnvalue(ra, luai_numsub(nvalue(ra), nvalue(pstep))); + if (ra && pstep) + setnvalue(ra, luai_numsub(nvalue(ra), nvalue(pstep))); dojump(L, pc, GETARG_sBx(i)); continue; } diff --git a/src/command.c b/src/command.c index 84d777ac..a15471c8 100644 --- a/src/command.c +++ b/src/command.c @@ -966,9 +966,11 @@ void CV_RegisterVar(consvar_t *variable) // check net variables if (variable->flags & CV_NETVAR) { + const consvar_t *netvar; variable->netid = CV_ComputeNetid(variable->name); - if (CV_FindNetVar(variable->netid)) - I_Error("Variables %s and %s have same netid\n", variable->name, CV_FindNetVar(variable->netid)->name); + netvar = CV_FindNetVar(variable->netid); + if (netvar) + I_Error("Variables %s and %s have same netid\n", variable->name, netvar->name); } // link the variable in diff --git a/src/hardware/hw_main.c b/src/hardware/hw_main.c index 35a01ffd..ca4e000b 100644 --- a/src/hardware/hw_main.c +++ b/src/hardware/hw_main.c @@ -4529,7 +4529,8 @@ static void HWR_SortVisSprites(void) // Fix first and last. ds still points to the last one after the loop dsfirst->prev = &unsorted; unsorted.next = dsfirst; - ds->next = &unsorted; + if (ds) + ds->next = &unsorted; unsorted.prev = ds; // pull the vissprites out by scale @@ -4552,10 +4553,13 @@ static void HWR_SortVisSprites(void) best = ds; } } - best->next->prev = best->prev; - best->prev->next = best->next; - best->next = &gr_vsprsortedhead; - best->prev = gr_vsprsortedhead.prev; + if (best) + { + best->next->prev = best->prev; + best->prev->next = best->next; + best->next = &gr_vsprsortedhead; + best->prev = gr_vsprsortedhead.prev; + } gr_vsprsortedhead.prev->next = best; gr_vsprsortedhead.prev = best; } diff --git a/src/hardware/r_opengl/r_opengl.c b/src/hardware/r_opengl/r_opengl.c index 1085a712..54dd9485 100644 --- a/src/hardware/r_opengl/r_opengl.c +++ b/src/hardware/r_opengl/r_opengl.c @@ -1928,7 +1928,7 @@ static inline void DrawMD2Ex(INT32 *gl_cmd_buffer, md2_frame_t *frame, UINT32 du //pglBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); // alpha = level of transparency // Remove depth mask when the model is transparent so it doesn't cut thorugh sprites // SRB2CBTODO: For all stuff too?! - if (color[3] < 255) + if (color && color[3] < 255) { pglBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); // alpha = level of transparency pglDepthMask(GL_FALSE); diff --git a/src/r_things.c b/src/r_things.c index eaab5361..76251d88 100644 --- a/src/r_things.c +++ b/src/r_things.c @@ -1634,7 +1634,8 @@ void R_SortVisSprites(void) // Fix first and last. ds still points to the last one after the loop dsfirst->prev = &unsorted; unsorted.next = dsfirst; - ds->next = &unsorted; + if (ds) + ds->next = &unsorted; unsorted.prev = ds; // pull the vissprites out by scale