comparison urogue/things.c @ 298:5a94c9b3181e

UltraRogue: clear the next_obj field when removing items from the floor. The next_obj field is a pointer which the top item in a stack uses to keep a list of the other items. When removing an item from the stack, rem_obj() failed to set next_obj to NULL, which can cause items in monster inventory to point to items earlier in the inventory list. That causes infinite co-recursion when saving or restoring.
author John "Elwin" Edwards
date Thu, 08 Feb 2018 20:54:34 -0500
parents c495a4f288c6
children
comparison
equal deleted inserted replaced
297:317166b49d8a 298:5a94c9b3181e
290 op->next_obj = objptr->next_obj; 290 op->next_obj = objptr->next_obj;
291 291
292 if (op->next_obj) 292 if (op->next_obj)
293 objptr->next_obj->l_prev = NULL; 293 objptr->next_obj->l_prev = NULL;
294 294
295 objptr->next_obj = NULL;
296
295 y = op->o_pos.y; 297 y = op->o_pos.y;
296 x = op->o_pos.x; 298 x = op->o_pos.x;
297 299
298 if (cansee(y, x)) 300 if (cansee(y, x))
299 mvwaddch(cw, y, x, op->o_type); 301 mvwaddch(cw, y, x, op->o_type);