Suspected bug in Shops

From: Ken Ray (kenr86@hotmail.com)
Date: 06/09/02


I believe I have noticed some strange behaviour with shops - in particular
if the shopkeeper has only one particular item for sale.  By the way, this
is with Circle30bpl21, running on Linux 6.1

What I have set up is a shopkeeper who only sells one particular object, and
doesn't buy anything.  The entry in the .shp file has the obj vnum for the
item he sells.  In the .zon fil, the shopkeeper is loaded in his shop, then
given lots of this one item (I assume a quantity of 999 results in
"unlimited").

When I look at the shopkeeper with an immortal, he does in fact have the
item he sells, but if I type in list, the response is just:

"Presently, none of these are for sale."

If I type "buy <object that I know he has for sale>", then he sells it to me
in the expected manner (and also takes the money for it!!)

I looked in the shopping_list routine in shop.c, and found what I believe
the problem to be.  There is a for loop that goes through all the objects
the shopkeeper currently is carrying.  The first time through, the pointer
last_obj is NULL, so this executes a special section of the code, which sets
last_obj to the current object, and the count of that object to 1.  Note
that we haven't set the "found" flag to true yet.  We continue looping.

Lets assume that the shopkeeper has more of the same item - so the second
and subsequent times around this for loop, since last_obj is no longer NULL,
the first else clause will be executed.  But the first statement in this is
an if test to see if this object is the same as  the previous object, and if
so, all we do is increment the counter.  We still have not set "found" true,
nor have we listed anything.

What I believe is happenning is that since we never execute the code section
that actually lists the line showing the item and the quantity on hand
(because the trigger for this is when we find a new item that is not the
same as the last item).  This section also sets the flag "found".

Once we have added up the total number of items (all of hte same type), we
have not actually set this found flag.  Hence the program logic things that
there is nothing currently available.

I have checked the latest cvs on the ftp site, and also scanned through the
complete change log, and there is no mention of this.

Question:  Am I completely deluded, or is this an actual bug that has not
been discovered yet?

Ken Ray



_________________________________________________________________
MSN Photos is the easiest way to share and print your photos:
http://photos.msn.com/support/worldwide.aspx

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