On our mud we have it set so you can only quit with so many items. Now
the problem is when people are extracted for being idle. I made some code
that should count how many items you have then if it is over max_obj_save,
remove it. Now it crashes on the indicated line and I can not figure out
why.
void Idle_eq_remove(struct char_data *ch, struct obj_data *obj, long *nitems)
{
int numitems = 0;
>>>>>if ((GET_OBJ_TYPE(obj) == ITEM_WEAPON) || <<<<<< crash here
(GET_OBJ_TYPE(obj) == ITEM_ARMOR) || (GET_OBJ_TYPE(obj) == ITEM_LIGHT) ||
(GET_OBJ_TYPE(obj) == ITEM_FIREWEAPON) || (GET_OBJ_TYPE(obj) == ITEM_STAFF) ||
(GET_OBJ_TYPE(obj) == ITEM_MISSILE) || (GET_OBJ_TYPE(obj) == ITEM_WAND))
{
(*nitems)++;
numitems = *nitems;
if (numitems > max_obj_save)
extract_obj(obj);
}
Idle_eq_remove(ch, obj->contains, nitems);
Idle_eq_remove(ch, obj->next_content, nitems);
}
GDB Output
GDB 4.16 (i586-unknown-linux), Copyright 1996 Free Software Foundation, Inc...
Core was generated by `bin/circle -q 4002'.
Program terminated with signal 11, Segmentation fault.
Reading symbols from /usr/lib/libcrypt.so.1...done.
Reading symbols from /lib/ld-linux.so.1...done.
#0 Idle_eq_remove (ch=0x84bcdc8, obj=0x0, nitems=0xbffff78c) at objsave.c:1017
1017 if ((GET_OBJ_TYPE(obj) == ITEM_WEAPON) ||
(gdb)
___ _ _
/ _ \ _ / \ / \ Age Of War
| |_| | / \ | | | | Telnet: ageofwar.org 4000
| _ | | O | | \_/\_/ | Web page: www.ageofwar.org/~aow
|_| |_| \_/ \___/\___/ Email: darkness@ageofwar.org
+------------------------------------------------------------+
| Ensure that you have read the CircleMUD Mailing List FAQ: |
| http://democracy.queensu.ca/~fletcher/Circle/list-faq.html |
+------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/08/00 PST