Hello everyone, I have a problem I am hoping someone can help me with. I am running Circle30bpl15 on FreeBSD/i386 After unsuccessfully trying all of the fixes from the ftp site, I decided to go through and have the poof's save the same way titles are done. The problem is that the system does a core dump once when attempting to save the poof's (regardless of if they had been modified from the default). Running a backtrace on GDB gives me the following. Core was generated by `circle'. Program terminated with signal 11, Segmentation fault. Reading symbols from /usr/lib/libcrypt.so.2...done. Reading symbols from /usr/lib/libc.so.4...done. Reading symbols from /usr/libexec/ld-elf.so.1...done. #0 0x80a32ac in write_aliases (ch=0x83f1e00) at alias.c:31 31 if (GET_ALIASES(ch) == NULL) (gdb) backtrace #0 0x80a32ac in write_aliases (ch=0x83f1e00) at alias.c:31 #1 0x805edd9 in do_save (ch=0x83f1e00, argument=0xbfbff528 "", cmd=217, subcmd=0) at act.other.c:143 #2 0x8081095 in command_interpreter (ch=0x83f1e00, argument=0xbfbff524 "save") at interpreter.c:709 #3 0x804a234 in game_loop (mother_desc=3) at comm.c:769 #4 0x804975a in init_game (port=4040) at comm.c:363 #5 0x80496ab in main (argc=3, argv=0xbfbff8f8) at comm.c:327 (gdb) quit Here is my do_save function.. (stock bpl15) ACMD(do_save) { if (IS_NPC(ch) || !ch->desc) return; /* Only tell the char we're saving if they actually typed "save" */ if (cmd) { if (auto_save && GET_LEVEL(ch) < LVL_IMMORT) { send_to_char("Saving aliases.\r\n", ch); write_aliases(ch); return; } sprintf(buf, "Saving %s and aliases.\r\n", GET_NAME(ch)); send_to_char(buf, ch); } write_aliases(ch); save_char(ch, NOWHERE); Crash_crashsave(ch); if (ROOM_FLAGGED(ch->in_room, ROOM_HOUSE_CRASH)) House_crashsave(GET_ROOM_VNUM(IN_ROOM(ch))); } It points at the write_aliases, however...I had not modified that section eaither.. void write_aliases(struct char_data *ch) { FILE *file; char fn[MAX_STRING_LENGTH]; struct alias_data *temp; get_filename(GET_NAME(ch), fn, ALIAS_FILE); remove(fn); if (GET_ALIASES(ch) == NULL) return; if ((file = fopen(fn, "w")) == NULL) { log("SYSERR: Couldn't save aliases for %s in '%s'.", GET_NAME(ch), fn); perror("SYSERR: write_aliases"); return; } for (temp = GET_ALIASES(ch); temp; temp = temp->next) { int aliaslen = strlen(temp->alias); int repllen = strlen(temp->replacement) - 1; fprintf(file, "%d\n%s\n" /* Alias */ "%d\n%s\n" /* Replacement */ "%d\n", /* Type */ aliaslen, temp->alias, repllen, temp->replacement + 1, temp->type); } fclose(file); } Any help on this would be greatly appreciated.. Dennis - Lazarus of Realms of Ankh (imperial.palace.net 4024) http://ankh_mud.tripod.com ________________________________________________________________________ Get Your Private, Free E-mail from MSN Hotmail at http://www.hotmail.com +------------------------------------------------------------+ | Ensure that you have read the CircleMUD Mailing List FAQ: | | http://qsilver.queensu.ca/~fletchra/Circle/list-faq.html | +------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 04/10/01 PDT