On Mon, 15 Dec 1997, Chuck Carson wrote:
<-- SNIP -->
> Here are the code segments around this line:
> /* Aggressive Mobs */
> ==PATCH======> if (MOB_FLAGGED(ch, MOB_AGGRESSIVE) || = MOB_FLAGGED(ch,
> MOB_AGGR_TO_ALIGN)) {
> found == FALSE;
> ===CRASHOLA==> for (vict =3D world[ch->in_room].people; =
> vict && !found; vict == vict->next_in_room) {
And here we got a good old crash bug (Wonder if bpl12 got all of them
cleaned out ? :), else I would suggest that next patch has. )
Each time you have a for(bleh=ppl; bleh; bleh = bleh->next) you have
a high possiblity for crash specially when 'bleh' (in your case 'vict')
got a good chance for being removed from memory (death, etc). So if
'bleh' gets removed then where is 'bleh->next' pointing at ? most of the
time the empty space.. AKA crash bug.
How to fix it. Make another variable called 'bleh_next' or 'vict_next' or
whatever. And change the last part of the for() to 'vict = vict_next' and
first in the for() { } part insert 'vict_next = vict->next_in_room'..
To see it better:
struct char_data *vict_next;
for (vict = world[ch->in_room].people; vict && !found;
vict = vict_next) {
vict_next = vict->next_in_room;
etc..
}
This should fix your problem..
If not.. Please write me again..
Erik Niese-Petersen
AKA Quint the Typo Dane
+------------------------------------------------------------+
| Ensure that you have read the CircleMUD Mailing List FAQ: |
| http://democracy.queensu.ca/~fletcher/Circle/list-faq.html |
+------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/08/00 PST