Hey list,
This has been happening lately for no good reason that i can figure out.
The mud has been crashing whenever someone uses the 'clan talk' command.
Does anyone have any idea why this is crashing? Here's the gdb output (the
clan talk command is below it)
#0 get_trust (ch=0x0) at handler.c:729
729 if ( ch->desc != NULL && ch->desc->original != NULL )
(gdb) bt
#0 get_trust (ch=0x0) at handler.c:729
#1 0x8075601 in do_clan_talk (ch=0x40704278,
argument=0xbfffe8dd "Do I get to kill him?") at clan.c:1140
#2 0x8095c91 in interpret (ch=0x40704278,
argument=0xbfffe8d4 "newbreed Do I get to kill him?") at interp.c:718
#3 0x8070bcd in substitute_alias (d=0x40961fa4,
argument=0x409623c1 "newbreed Do I get to kill him?") at alias.c:95
#4 0x8075da1 in game_loop_unix (control=4) at comm.c:818
#5 0x8075929 in main (argc=2, argv=0xbffffd04) at comm.c:448
(gdb) print ch->name
Cannot access memory at address 0x7c
(gdb) up
#1 0x8075601 in do_clan_talk (ch=0x40704278,
argument=0xbfffe8dd "Do I get to kill him?") at clan.c:1140
1140 if ( (d->connected == CON_PLAYING && /*is
playing*/
(gdb) print ch->name
$1 = 0x409a7d94 "Menelaus"
(gdb)
(Sorry about the formatting if it looks a little rough)
void do_clan_talk(CHAR_DATA *ch, char *argument)
{
DESCRIPTOR_DATA *d;
char buf[MSL];
if(IS_IMMORTAL(ch))
{
send_to_char("Use the clantalk command.\n\rType 'help clantalk'
to see
info on it.\n\r",ch);
return;
}
if (!is_clan(ch))
{
send_to_char("You aren't in a clan.\n\r",ch);
return;
}
if ( argument[0] == '\0' )
{
if (IS_SET(ch->comm,COMM_NOCLAN))
{
send_to_char("Clan channel is now ON\n\r",ch);
REMOVE_BIT(ch->comm,COMM_NOCLAN);
}
else
{
send_to_char("Clan channel is now OFF\n\r",ch);
SET_BIT(ch->comm,COMM_NOCLAN);
}
return;
}
if (IS_SET(ch->comm,COMM_NOCHANNELS))
{
send_to_char("The gods have revoked your channel
priviliges.\n\r",ch);
return;
}
REMOVE_BIT(ch->comm,COMM_NOCLAN);
sprintf(buf,"%s: {wYou '%s'{x\n\r", clan_table[ch->clan].who_name,
argument);
send_to_char(buf, ch); /*sends to char*/
for ( d = descriptor_list; d != NULL; d = d->next )
{
if ( (d->connected == CON_PLAYING && /*is playing*/
d->character != ch && /*isn't sender*/
is_same_clan(ch,d->character) && /*same clan as sender*/
!IS_SET(d->character->comm,COMM_NOCLAN) && /*doesn't have
noclan on*/
!IS_SET(d->character->comm,COMM_QUIET)) || /*doesn't
have quiet mode
on*/
IS_IMMORTAL(d->character)) /* is an imm */
{
sprintf(buf,"%s: {w%s '%s'{x\n\r",
clan_table[ch->clan].who_name,
ch->name, argument);
send_to_char(buf, d->character); /*sends to mud */
}
else if(IS_IMMORTAL(d->character) && (d->character != ch) &&
(is_same_clan(ch,d->character)))
{
sprintf(buf,"%s: {w%s '%s'{x\n\r",
clan_table[ch->clan].who_name,
ch->name, argument);
send_to_char(buf, d->character);
} /* this function sends it to all imms */
}
return;
}
_____________________________________________
Free email with personality! Over 200 domains!
http://www.MyOwnEmail.com