Nocturnal Occulto wrote:
>
> Found another bug,
> sedit <some shop that doesnt exists yet, using shop number 2507>
> set a value, save it internally, then show shops
>
> 2 2506 2519 2506 0.30 2.50 GENM___
> 3 2507 -1 3300 1.00 1.00 GENMCTW
> 4 3000 -1 3000 0.15 1.15 G_NMCTW
>
> shop 2507 has where = -1, thats ok, but
> somehow the shop below gets its location messed up,
> the old location was 3033
I think this is the fix that's needed:
--- genshp.c 1999/06/04 20:03:22 1.4
+++ genshp.c 1999/06/15 17:15:11
@@ -382,14 +382,24 @@ int add_shop(struct shop_data *nshp)
for (rshop = top_shop - top_shop_offset; rshop > 0; rshop--) {
if (nshp->vnum > SHOP_NUM(rshop - 1)) {
found = rshop;
+ /* need to null out the old shop and produce, or
copy shop frees them
+ * and hence frees the stuff for the shop above!
*/
+ shop_index[rshop].in_room = NULL;
+ shop_index[rshop].producing = NULL;
+ shop_index[rshop].type = NULL;
copy_shop(&shop_index[rshop], nshp);
break;
}
shop_index[rshop] = shop_index[rshop - 1];
}
- if (!found)
+ if (!found) {
+ /* must be the very bottom, again NULL pointers */
+ shop_index[rshop].in_room = NULL;
+ shop_index[rshop].producing = NULL;
+ shop_index[rshop].type = NULL;
copy_shop(&shop_index[0], nshp);
+ }
if (rznum != NOWHERE)
add_to_save_list(zone_table[rznum].number, SL_SHP);
+------------------------------------------------------------+
| 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 : 12/15/00 PST