> #0  0x80950db in do_spells (ch=0x3031477b, argument=0x5c <Address 0x5c out
> of bounds>) at skills.c:334
> 334             if ((level = skill_table[sn].skill_level[ch->class]) <
> LEVEL_HERO + 1

Actually, doesn't look like an out of bounds error.  Or at least, not
the one you're probably thinking of.  The fact that one of your
arguments is screwed up probably means that a buffer is being over-ran
and writing over the stack.  Once the stack is corrupted, the program
can crash in funny places.

    char spell_list[LEVEL_HERO + 1][MAX_STRING_LENGTH];

I think this is the likely culprit.
I would imagine that since all of your skills are set to 99, this string
is too small to handle them all.  Try making the buffer much larger than
MAX_STRING_LENGTH for testing purposes, or move half of your spells to a
different level and see if that helps.
--Palrich.

Reply via email to