(Also known as SPEKTRUM)
Heres my code:
Code:
void close_connection(CONNECTION_DATA *con)
{
if (con->ch) {
kill_ch(con->ch);
}
UNLINK(con,first_con,last_con,next,prev);
close(con->sd);
log_to_file(LOG_NORMAL,"Connection closed on socket #%d",con->sd);
free(con);
con = NULL;
}
and heres the function kill_ch:
Code:
void kill_ch(CHAR_DATA *ch)
{
UNLINK(ch,first_ch,last_ch,next,prev);
log_to_file(LOG_NORMAL,"Character %s(%s) on socket #%d was removed.",
ch->name, ch->con->ip_addr, ch->con->sd);
free(ch);
}
When I free(ch), it frees ch just fine. but when I free(con) it crashes the program. any help? Thanks.