On Mon, 4 Aug 1997, David Klasinc wrote: >db.c: > #define FREE(ptr) ({ free((ptr)); (ptr) = NULL; }) You'll need to remove the ('s before the { if you use it in a one line if statement. like: if (ptr) FREE(ptr); >void check_fall(void) [snip] > if (ROOM_AFFECTED(IN_ROOM(ch), RAFF_ACID_RAIN)) > gen_damage(ch, GET_MAX_HIT(ch) * 10 / 100, SPELL_ACID_RAIN); > 367-> ? > if (ch && ((SECT(IN_ROOM(ch)) == SECT_FLYING)) && (!AFF_FLAGGED(ch, AFF_FLY > !(IS_NPC(ch) && MOB_FLAGGED(ch, MOB_WINGS)) && > !(IS_NPC(ch) && MOB_FLAGGED(ch, MOB_NOACT)) && > !(GET_LEVEL(ch) > LVL_IMMORT)) { > >... etc etc etc ... >Char get's extracted in gen_damage() >#0 0x807ee85 in check_fall () at limits.c:367 After looking over extract_char() some more, it does NOT free PC's, only mobiles. A good reason not to free them is because they are in the memu. Sooo: > if (ch && ((SECT(IN_ROOM(ch)) == SECT_FLYING)) && (!AFF_FLAGGED(ch, Check: Result: 1) ch ok (they aren't freed yet, just in menu) 2) SECT(IN_ROOM(ch)) ch->inroom == -1 and sector of room -1 == crash (world[-1]) I'd make sure IN_ROOM(ch) != NOWHERE after ch. -- greerga@muohio.edu me@null.net | Genius may have its limitations, but stupidity http://www.muohio.edu/~greerga | is not thus handicapped. -- Elbert Hubbard +------------------------------------------------------------+ | 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