From: "Josh Harris" <jharris2@ACSU.BUFFALO.EDU> > then for my check_evil() function I put it in weather.c just because > that's where the function I was referencing it from was at. > > > void check_evil() { > struct descriptor_data *d; > > for (d = descriptor_list; d; d = d->next) > if (d->connected) continue; > > send_to_char(d->character, "The evil grows stronger within you.\r\n"); > } > > This was just a test code to make sure I had everything set up correctly > so far. However I ran my mud, and used set evil on to turn my affections > flag on and my mud crashed a minute or two later. When I ran it as > bin/circle it said core dump and segmentation fault when the mud crashed. > Another time, try running gdb on the core (gdb bin/circle lib/core), and do a backtrace (bt). it will tell you which line caused the crash. In this case, the problem isn't finding the line. The loop above will only exit if d is NULL. and _then_ you go ahead and dereference it right away! You might have been planning something like this instead: void check_evil(void) { struct descriptor_data *d; for (d = descriptor_list; d; d = d->next) { } /* << note the { */ if (STATE(d) != CON_PLAYING) continue; if (!d->character) /* just to make sure */ continue; send_to_char(d->character, "The evil grows stronger within you.\r\n"); } /* << note the } */ } Which will send the message to all characters online, regardless if they're paging, deaf, etc. Welcor -- +---------------------------------------------------------------+ | FAQ: http://qsilver.queensu.ca/~fletchra/Circle/list-faq.html | | Archives: http://post.queensu.ca/listserv/wwwarch/circle.html | | Newbie List: http://groups.yahoo.com/group/circle-newbies/ | +---------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 06/26/03 PDT