Can someone help me out here?
I seem to get a crash everytime there is a new player:
Sun Dec 15 09:52:44 :: Kz [defender.lm.com] new player.
Sun Dec 15 09:52:46 :: Kz entering game with no equipment.
Program received signal SIGSEGV, Segmentation fault.
0x6003e26f in end ()
(gdb) list
102
103 /*
*********************************************************************
104 * main game loop and related stuff *
105
********************************************************************* */
106
107 int main(int argc, char **argv)
108 {
109 int port;
110 char buf[512];
111 int pos = 1;
(gdb) bt
#0 0x6003e26f in end ()
#1 0x36641 in roll_real_abils (ch=0xbfffedd8) at class.c:419
#2 0x60004e42 in end ()
#3 0x6000527a in end ()
#4 0x60031779 in end ()
#5 0x600322e2 in end ()
#6 0x6002ee24 in end ()
#7 0x366dc in do_start (ch=0x53c200) at class.c:446
#8 0x56078 in nanny (d=0x5a2000, arg=0xbffff8a4 "1") at interpreter.c:1802
#9 0x1edd in game_loop (mother_desc=6) at comm.c:521
#10 0x164d in init_game (port=7000) at comm.c:211
#11 0x153e in main (argc=1, argv=0xbffffc6c) at comm.c:181
(gdb) f 1
#1 0x36641 in roll_real_abils (ch=0xbfffedd8) at class.c:419
419 }
This is my roll_real_abils:
void roll_real_abils(struct char_data * ch)
{
int i, j, k, temp;
ubyte table[6];
ubyte rolls[4];
for (i = 0; i < 6; i++)
table[i] = 0;
for (i = 0; i < 6; i++) {
for (j = 0; j < 4; j++)
rolls[j] = number(1, 6);
temp = rolls[0] + rolls[1] + rolls[2] + rolls[3] -
MIN(rolls[0], MIN(rolls[1], MIN(rolls[2], rolls[3])));
for (k = 0; k < 6; k++)
if (table[k] < temp) {
temp ^= table[k];
table[k] ^= temp;
temp ^= table[k];
}
}
ch->real_abils.str_add = 0;
switch (GET_CLASS(ch)) {
case CLASS_MAGIC_USER:
ch->real_abils.intel = table[0];
ch->real_abils.wis = table[1];
ch->real_abils.dex = table[2];
ch->real_abils.str = table[3];
ch->real_abils.con = table[4];
ch->real_abils.cha = table[5];
break;
case CLASS_CLERIC:
ch->real_abils.wis = table[0];
ch->real_abils.intel = table[1];
ch->real_abils.str = table[2];
ch->real_abils.dex = table[3];
ch->real_abils.con = table[4];
ch->real_abils.cha = table[5];
break;
case CLASS_DRUID:
ch->real_abils.wis = table[0];
ch->real_abils.intel = table[1];
ch->real_abils.str = table[2];
ch->real_abils.dex = table[3];
ch->real_abils.con = table[4];
ch->real_abils.cha = table[5];
break;
case CLASS_THIEF:
ch->real_abils.dex = table[0];
ch->real_abils.str = table[1];
ch->real_abils.con = table[2];
ch->real_abils.intel = table[3];
ch->real_abils.wis = table[4];
ch->real_abils.cha = table[5];
break;
case CLASS_WARRIOR:
ch->real_abils.str = table[0];
ch->real_abils.dex = table[1];
ch->real_abils.con = table[2];
ch->real_abils.wis = table[3];
ch->real_abils.intel = table[4];
ch->real_abils.cha = table[5];
if (ch->real_abils.str == 18)
ch->real_abils.str_add = number(0, 100);
break;
case CLASS_KNIGHT:
ch->real_abils.con = table[0];
ch->real_abils.wis = table[1];
ch->real_abils.str = table[2];
ch->real_abils.dex = table[3];
ch->real_abils.intel = table[4];
ch->real_abils.cha = table[5];
if (ch->real_abils.str == 18)
ch->real_abils.str_add = number(0, 100);
break;
case CLASS_RANGER:
ch->real_abils.str = table[0];
ch->real_abils.con = table[1];
ch->real_abils.intel = table[2];
ch->real_abils.wis = table[3];
ch->real_abils.dex = table[4];
ch->real_abils.cha = table[5];
break;
case CLASS_MAR:
ch->real_abils.dex = table[0];
ch->real_abils.con = table[1];
ch->real_abils.str = table[2];
ch->real_abils.intel = table[3];
ch->real_abils.wis = table[4];
ch->real_abils.cha = table[5];
break;
}
ch->aff_abils = ch->real_abils;
}
Sorry if this is spam, but can someone please help? :) Thanks!
+-----------------------------------------------------------+
| Ensure that you have read the CircleMUD Mailing List FAQ: |
| http://cspo.queensu.ca/~fletcher/Circle/list_faq.html |
+-----------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/18/00 PST