In a message dated 98-07-13 22:41:38 EDT, siv@CYBERENET.NET writes: << what is the GET_RT macro, and do you have any gdb output from the crash? the only thing i could suggest (without further info) is to put a check for d->character before using the macro to make sure that the descriptor has a valid character attached to it.. >> Function's changed some since last time so I'm sending it again. It now has a check to see if the player is CON_PLAYING...only problem is as soon as it gets to asking the sex of a new char (dunno about old chars, did a pwipe), it crashes at the line "if (STATE(d) == CON_PLAYING) {. roundtime is an int in struct char_data (structs.h), and in utils.h: #define GET_RT(ch) ((ch)->roundtime) comm.c--this is called from heartbeat() every 1 second (or is supposed to be, but seems to be occuring more often than that). void update_roundtime(void) { struct descriptor_data *d, *next_d; log("For statement"); for (d = descriptor_list; d; d = next_d) { log("Playing?"); if (STATE(d) == CON_PLAYING) { log("next_d = d->next"); next_d = d->next; log("Checking to make sure RT >= 0."); if (GET_RT(d->character) < 0) GET_RT(d->character) = 0; log("Subracting 1 from RT"); if (GET_RT(d->character) > 0) GET_RT(d->character) -= 1; log("Done."); } } } Any ideas? Thanx for the help. :-) -Elrelet +------------------------------------------------------------+ | 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/15/00 PST