From: "Ronald Evers" <dlanor@xs4all.nl>
> Hey folks,
>
> I've found a bug in medit that I can't seem to fix. Whenever I
> alter a mob that has a script set I get a seg fault when I exit
> the medit menu and save it.
>
> I'm using bpl21 with this dg_scripts_pl8_with_oasis_bpl21.patch
> patch from the ftp site installed.
>
> The mob I tried this on was the wandering spirit (1202). I gave
> him one trigger (greet) that simply makes him say hi. Then just
> "medit 1202;l;0;q;y" and there's your seg fault..
>
Change your free_mobile() to look like this:
/*
* Free a mobile structure that has been edited.
* Take care of existing mobiles and their mob_proto!
*/
int free_mobile(struct char_data *mob)
{
int i;
if (mob == NULL)
return FALSE;
/*
* Non-prototyped mobile. Also known as new mobiles.
*/
if ((i = GET_MOB_RNUM(mob)) == NOBODY) {
free_mobile_strings(mob);
free_proto_script(mob, MOB_TRIGGER);
} else { /* Prototyped mobile. */
if (mob->player.name && mob->player.name != mob_proto[i].player.name)
free(mob->player.name);
if (mob->player.title && mob->player.title != mob_proto[i].player.title)
free(mob->player.title);
if (mob->player.short_descr && mob->player.short_descr !=
mob_proto[i].player.short_descr)
free(mob->player.short_descr);
if (mob->player.long_descr && mob->player.long_descr !=
mob_proto[i].player.long_descr)
free(mob->player.long_descr);
if (mob->player.description && mob->player.description !=
mob_proto[i].player.description)
free(mob->player.description);
/*[1]*/
if (mob->proto_script && mob->proto_script != mob_proto[i].proto_script)
free_proto_script(mob, MOB_TRIGGER);
}
while (mob->affected)
affect_remove(mob, mob->affected);
free(mob);
return TRUE;
}
I made buggy code in the first place, by having the check at [1] below
the code where i is sure to have meaning. This causes strange behaviour
and occasional crashes.
Also, remember to add the line
OLC_MOB(d)->proto_script = OLC_SCRIPT(d);
in medit_save_internally(), to make your changes show in medit.
I'll have pl9 out within a week - at most 10 days. Got swamped with work,
and had to postpone the deadline.
Welcor
--
+---------------------------------------------------------------+
| FAQ: http://qsilver.queensu.ca/~fletchra/Circle/list-faq.html |
| Archives: http://post.queensu.ca/listserv/wwwarch/circle.html |
| Newbie List: http://groups.yahoo.com/group/circle-newbies/ |
+---------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 06/25/03 PDT