Hi friends. :)
I'm using circle bpl17 with ascii player files and I have made a code to
show the players that had more deaths. But sometimes (not always,
sometimes), I used the kgdb to read the core file and I found Segmentation
Fault error. This is the code (I'll to show the line where the error
occurs):
void mural_vermes(struct char_data * ch)
{
char buft1[1000];
char jogador[20];
int jogadores[10] = {};
int niveljog=0;
extern struct player_index_element *player_table;
int j, i, morte = 0;
struct char_data *victim=NULL;
struct char_data *ler=NULL;
*buft1 = '\0';
morte = 0;
niveljog = 99999;
sprintf(buft1 + strlen(buft1),
"\r\n|========================================|\r\n");
sprintf(buft1 + strlen(buft1),
"|===========MURAL=DOS=VERMES=============|\r\n");
sprintf(buft1 + strlen(buft1), "|
|\r\n");
for (i =0; i < 10; i++){
for (j = 0; j <= top_of_p_table; j++){
if((victim=is_playing((player_table +j)->name))) {
if(GET_MORTES(victim) >= morte && find_verme(GET_IDNUM(victim),
jogadores) == -1){
if (GET_MORTES(victim) == morte && GET_LEVEL(victim) > niveljog) {
}
else {
strcpy(jogador, GET_NAME(victim));
morte = GET_MORTES(victim);
niveljog = GET_LEVEL(victim);
jogadores[i] = GET_IDNUM(victim);
}
}
}
else {
CREATE(ler, struct char_data, 1);
clear_char(ler);
CREATE(ler->player_specials, struct player_special_data, 1);
load_char((player_table + j)->name, ler);
if(ler->player_specials->saved.mortes >= morte &&
find_verme(ler->char_specials.saved.idnum, jogadores) == -1){
if(ler->player_specials->saved.mortes == morte &&
ler->player.level > niveljog){
}
else {
==> strcpy(jogador, ler->player.name); ====================> this
is the line where the error occurs
morte = ler->player_specials->saved.mortes;
niveljog = ler->player.level;
jogadores[i] = ler->char_specials.saved.idnum;
}
free_char(ler);
}
}
}
if (morte > 0)
sprintf(buft1 + strlen(buft1), "| [%3d] %-20s %3d morte%s |\r\n",
niveljog, jogador, morte, morte == 1 ? " " : "s");
morte = 0;
niveljog = 99999;
}
sprintf(buft1 + strlen(buft1), "|
|\r\n");
sprintf(buft1 + strlen(buft1),
"|========================================|\r\n");
send_to_char(buft1, ch);
}
Thx, Khayman.
+------------------------------------------------------------+
| Ensure that you have read the CircleMUD Mailing List FAQ: |
| http://qsilver.queensu.ca/~fletchra/Circle/list-faq.html |
+------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 04/11/01 PDT