On Tue, 29 Jul 1997, Tony Robbins wrote:
>When a player goes AFK it's fine, when they come back it's fine, but if
>they go AFK again, BUG!!! MUD crash. I'm not great with coding, I'm
>just trying to get something going that my friends and I and others can
>enjoy.
Remember people, you can't free() a string constant. (Not directed at you
in particular as you didn't write the code)
>void set_afk(struct char_data * ch, char *afk_message)
>{
>
>if (strlen(afk_message) > POOF_LENGTH)
> afk_message[POOF_LENGTH] = '\0';
>
> if (GET_AFK(ch) != NULL)
> free(GET_AFK(ch));
>
> GET_AFK(ch) = str_dup(afk_message);
>}
Ok, here we check if the person has a previous afk message, if they do free
it so we can make a new one, but ...
>ACMD(do_afk)
>{
[snip]
> if (!*argument)
> {
> result = PRF_TOG_CHK(ch, PRF_AFK);
> GET_AFK(ch) = "I am AFK!";
> }
[snip]
...right above, we assign the message as a string constant if they didn't
type anything else. To reproduce problem, "afk;afk;afk". To fix problem,
just change it to 'GET_AFK(ch) = str_dup("I am AFK!");'
--
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