Re: BUG report

From: Sammy (samedi@clark.net)
Date: 08/18/95


On Thu, 17 Aug 1995, Daniel W. Burke wrote:

> same for detect invis potions also.... appears to be a general bug with 
> durations......
> 
> hmm..... what's the number range for sh_int?   if it's not that high, 
> the when it hits the limit it will go negative..... maybe for 
> duration's a MAX duration has to be defined somewhere....

sh_int is typedef'ed as an unsigned short integer.  I'm no C guru so I 
don't know exactly what this will look like in practice, but if you 
assume an integer is 16 bits, then a short int would be 8 bts.  The 
unsigned part has me a little puzzled, but since negative values are used 
in the code, that sign has to come from somewhere, so knock off one more 
bit for the sign.  What you've got left is 7 bits for a maximum value of 
127 before you run into negative values.

Solution?  Setting a max duration as stated above seems to be the best 
way to handle it.  You could also make duration a regular int, though 
this may cause problems (I believe you'd have to change the pfiles...ugh).
Setting a limit wouldn't be tough.  Just add a little routine in like:

if (duration < -1) duration = 127;

That would take advantage of the fact that 127 + 1 = -128 if my theory is 
correct.

Sam



This archive was generated by hypermail 2b30 : 12/18/00 PST