Re: [bpl16][oedit crash][long]

From: Ray Campbell (deadeye00@home.com)
Date: 01/12/00


Ray...
>  for (shop = 0; shop <= top_shop - top_shop_offset; shop++)
>--> line 144 -->    for (i = 0; SHOP_PRODUCT(shop, i) != NOTHING; i++)
>      SHOP_PRODUCT(shop, i) += (SHOP_PRODUCT(shop, i) >= refpt);

>> George...
>> You'd have to know the valies of top_shop, top_shop_offset, and shop.
>>
I did a grep for top_shop and it returned:
--
genmob.c:extern int top_shop;
genmob.c:    for (shop = 0; shop <= top_shop - top_shop_offset; shop++)
genmob.c:    for (counter = 0; counter <= top_shop - top_shop_offset;
counter++)
genobj.c:extern int top_shop;
genobj.c:  for (shop = 0; shop <= top_shop - top_shop_offset; shop++)
genolc.c:/* Adjustment for top_shop change between bpl15 and bpl16. */
genolc.c:int top_shop_offset = 1;
genolc.c:int top_shop_offset = 0;
genshp.c:extern int top_shop;
genshp.c:  for (rshop_num = 0; rshop_num <= top_shop - top_shop_offset;
rshop_num++)
genshp.c:  top_shop++;
genshp.c:  RECREATE(shop_index, struct shop_data, top_shop -
top_shop_offset + 1);
genshp.c:  for (rshop = top_shop - top_shop_offset; rshop > 0; rshop--)
{
shop.c:int top_shop = 0;
shop.c:  for (shop_nr = 0; shop_nr < top_shop; shop_nr++)
shop.c:  if (shop_nr >= top_shop)
shop.c:    for (index = 0; index < top_shop; index++)
shop.c:    log("SYSERR: Error in shop #%d\n", SHOP_NUM(top_shop));
shop.c:      if (!top_shop)
shop.c:      SHOP_NUM(top_shop) = temp;
shop.c:      CREATE(shop_index[top_shop].producing, obj_vnum, temp);
shop.c: SHOP_PRODUCT(top_shop, count) = BUY_TYPE(list[count]);
shop.c:      read_line(shop_f, "%f", &SHOP_BUYPROFIT(top_shop));
shop.c:      read_line(shop_f, "%f", &SHOP_SELLPROFIT(top_shop));
shop.c:      CREATE(shop_index[top_shop].type, struct shop_buy_data,
temp);
shop.c: SHOP_BUYTYPE(top_shop, count) = BUY_TYPE(list[count]);
shop.c: SHOP_BUYWORD(top_shop, count) = BUY_WORD(list[count]);
shop.c:      shop_index[top_shop].no_such_item1 = fread_string(shop_f,
buf2);
shop.c:      shop_index[top_shop].no_such_item2 = fread_string(shop_f,
buf2);
shop.c:      shop_index[top_shop].do_not_buy = fread_string(shop_f,
buf2);
shop.c:      shop_index[top_shop].missing_cash1 = fread_string(shop_f,
buf2);
shop.c:      shop_index[top_shop].missing_cash2 = fread_string(shop_f,
buf2);
shop.c:      shop_index[top_shop].message_buy = fread_string(shop_f,
buf2);
shop.c:      shop_index[top_shop].message_sell = fread_string(shop_f,
buf2);
shop.c:      read_line(shop_f, "%d", &SHOP_BROKE_TEMPER(top_shop));
shop.c:      read_line(shop_f, "%d", &SHOP_BITVECTOR(top_shop));
shop.c:      read_line(shop_f, "%hd", &SHOP_KEEPER(top_shop));
shop.c:      SHOP_KEEPER(top_shop) = real_mobile(SHOP_KEEPER(top_shop));
shop.c:      read_line(shop_f, "%d", &SHOP_TRADE_WITH(top_shop));
shop.c:      CREATE(shop_index[top_shop].in_room, room_rnum, temp);
shop.c: SHOP_ROOM(top_shop, count) = BUY_TYPE(list[count]);
shop.c:      read_line(shop_f, "%d", &SHOP_OPEN1(top_shop));
shop.c:      read_line(shop_f, "%d", &SHOP_CLOSE1(top_shop));
shop.c:      read_line(shop_f, "%d", &SHOP_OPEN2(top_shop));
shop.c:      read_line(shop_f, "%d", &SHOP_CLOSE2(top_shop));
shop.c:      SHOP_BANK(top_shop) = 0;
shop.c:      SHOP_SORT(top_shop) = 0;
shop.c:      SHOP_FUNC(top_shop) = 0;
shop.c:      top_shop++;
shop.c:  for (index = 0; index < top_shop; index++) {
shop.c:  for (shop_nr = 0; shop_nr < top_shop; shop_nr++) {
shop.c:      for (shop_nr = 0; shop_nr < top_shop; shop_nr++)
shop.c:      if (shop_nr == top_shop) {
shop.c:    if ((shop_nr < 0) || (shop_nr >= top_shop)) {
--
>> George...
>> Also, if you upgraded to bpl16 or installed straight from it.
>> top_shop_offset may be incorrect if you missed a patch piece.

I'm not sure what the packager of the original zip file did, all it
stated was:
Circle30bpl16 with OasisOLC v.2 and DgScripts v1.7a, however because of
the possibility that the creator of the package may have done what you
said I did a grep on top_shop_offset and it returned:

genmob.c:    for (shop = 0; shop <= top_shop - top_shop_offset; shop++)
genmob.c:    for (counter = 0; counter <= top_shop - top_shop_offset;
counter++)
genobj.c:  for (shop = 0; shop <= top_shop - top_shop_offset; shop++)
genolc.c:int top_shop_offset = 1;
genolc.c:int top_shop_offset = 0;
genshp.c:  for (rshop_num = 0; rshop_num <= top_shop - top_shop_offset;
rshop_num++)
genshp.c:  RECREATE(shop_index, struct shop_data, top_shop -
top_shop_offset + 1);
genshp.c:  for (rshop = top_shop - top_shop_offset; rshop > 0; rshop--)
{

Possibly this information may prove conclusive to your theory?  Or lead
me in a gneral direction.
Thanks in advance...
        --Ray


     +------------------------------------------------------------+
     | 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