On Mon, 8 Jan 2001, Ron Martin wrote: >Please let me know if there are problems with the code. Yes. Oh, I suppose you want to know what they are. >ACMD(do_dig) >{ > int iroom = 0, rroom = 0; > int dir = 0; No need to '= 0' the iroom, rroom, or dir. > two_arguments(argument, buf, buf2); > iroom = atoi(buf2); > rroom = real_room(iroom); You should check for !buf || !buf2 before doing the conversion. > if (!buf) > { > send_to_char("Format: dig <dir> <room number>\r\n", ch); > return; > } > else if (!buf2) > { > send_to_char("Format: dig <dir> <room number>\r\n", ch); > return; > } if (!buf || !buf2) > for(i = 0; i < top_of_zone_table; i++) /* Find the zone in table */ ; i <= top_of_zone_table; > if(i == top_of_zone_table) /* Zone does not exist */ if (i > top_of_zone_table) > CREATE(temp_room, struct room_data, 1); > memset(temp_room, 0, sizeof(struct room_data)); /* Clear the room >structure */ CREATE already clears it. > temp_room->name = str_dup("An unfinished room"); /* Init stuff */ > temp_room->description = str_dup("You are in an unfinished room.\r\n"); > temp_room->number = iroom; > temp_room->zone = iroom/100; > rroom = add_room(temp_room); /* in oasis.c */ You either need to free() 'temp_room' or allocate it on the stack instead. OasisOLC makes a copy of all the relevant information. > CREATE(world[rroom].dir_option[rev_dir[dir]], struct room_direction_data,1); > world[rroom].dir_option[rev_dir[dir]]->general_description = NULL; > world[rroom].dir_option[rev_dir[dir]]->keyword = NULL; > world[rroom].dir_option[rev_dir[dir]]->to_room = ch->in_room; You're not checking if you're clobbering an already-existing exit in either of the allocations. -- George Greer | If it's about the CircleMUD mailing list, greerga@circlemud.org | mail owner-circle@post.queensu.ca instead. -- +---------------------------------------------------------------+ | FAQ: http://qsilver.queensu.ca/~fletchra/Circle/list-faq.html | | Archives: http://post.queensu.ca/listserv/wwwarch/circle.html | +---------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/03/01 PST