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..
I found that the mud enters the while(proto) loop twice and then
crashes that second time.
Any help/idea/suggestion would be greatly appreciated.
Ronald
--------------------------------------------------------------------
GDB OUTPUT FOLLOWS
--------------------------------------------------------------------
Program received signal SIGSEGV, Segmentation fault.
free_proto_script (thing=0x82dfea0, type=0) at dg_handler.c:110
110 proto = proto->next;
(gdb) bt
#0 free_proto_script (thing=0x82dfea0, type=0) at dg_handler.c:110
#1 0x0807a96e in free_mobile (mob=0x82dfea0) at genmob.c:276
#2 0x0808e66a in cleanup_olc (d=0x82de5d8, cleanup_type=1 '\001') at
oasis.c:348
#3 0x08087991 in nanny (d=0x82de5d8, arg=0xbffff770 "y") at
interpreter.c:1390
#4 0x0806cff6 in game_loop (mother_desc=5) at comm.c:755
#5 0x0806c730 in init_game (port=4000) at comm.c:382
#6 0x0806c622 in main (argc=1, argv=0xbffffb4c) at comm.c:327
#7 0x40063e5e in __libc_start_main (main=0x806c368 <main>, argc=1,
ubp_av=0xbffffb4c, init=0x804915c <_init>, fini=0x80b5b80 <_fini>,
rtld_fini=0x4000d3c4 <_dl_fini>, stack_end=0xbffffb3c) at
../sysdeps/generic/libc-start.c:129
(gdb) list free_proto_script
75 void free_proto_script(void *thing, int type) {
76
77 struct trig_proto_list *proto = NULL, *fproto;
78 char_data *mob;
79 obj_data *obj;
80 room_data *room;
81
82 switch (type) {
83 case MOB_TRIGGER:
84 mob = (struct char_data *)thing;
85 if (SCRIPT(mob))
86 extract_script(SCRIPT(mob));
87 SCRIPT(mob) = NULL;
88 proto = mob->proto_script;
89 mob->proto_script = NULL;
90 break;
91 case OBJ_TRIGGER:
<snip>
99 case WLD_TRIGGER:
<snip>
107 }
108 while (proto) {
109 fproto = proto;
110 proto = proto->next;
111 free(fproto);
112 }
113 }
--
+---------------------------------------------------------------+
| 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