On Fri, 15 Nov 2002, Kevin Dethlefs wrote:
>#0 0x4007a66d in __libc_free (mem=0x80d210d) at malloc.c:2866
>#1 0x8080858 in buildwalk (ch=0x8188320, dir=0) at genwld.c:554
>
>I can't see the problem, earlier I had problems getting it to set the room
>name and desc, and now its trying to get out of the memory. Pls help me in
>anyway you can.
While I can't say what your problem is, the code could use some cleaning:
+ /* Set up data for add_room function */
+ CREATE(room, struct room_data, 1);
+ room->name = str_dup("New BuildWalk Room");
+ sprintf(buf, "This unfinished room was created by %s.\r\n", GET_NAME(ch));
+ room->description = str_dup(buf);
+ room->number = vnum;
+ room->zone = world[ch->in_room].zone;
to:
struct room_data tmp_room;
room.name = "New BuildWalk Room";
sprintf(buf, "This unfinished room was created by %s.\r\n", GET_NAME(ch));
room->description = str_dup(buf);
[...]
add_room(&room);
[...]
free(room->description);
Your actual problem is likely random corruption of malloc's tracking data.
Try ElectricFence in Underflow and Overflow modes.
--
George Greer
greerga@circlemud.org
--
+---------------------------------------------------------------+
| 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