Mercurial > hg > early-roguelike
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); |