At 08:55 PM 4/14/2002 +0200, Peter Gibbs wrote:
>The specific problem Clinton mentioned is yet another infant mortality
>problem, this time in string_concat. I don't know what the current decision
>is on handling these situations, but this one can be avoided by optimising
>the code anyway. If the transcoding is done before making the result string,
>we know the actual length, instead of using the maximum possible.
>
>I haven't yet looked to see why basic needs to transcode string anyway.

As a follow-up, I found one bug.  Rather odd it is.  The symptom is loading 
a program, doing a LIST
and seeing only part of the code.  Dumping the 
string-which-contains-the-code you can see the entire program in it (unlike 
the earlier described bug).  The problem was in here:

         set S2, ""
         substr S2, S15, I1, LINEWIDTH
         save S2
         bsr STRIPSPACE     # (removes trailing whitespace)
         set I2, S2                 # Quietly convert S2 to an int
         ge I2, I6, VFOUND

So I'd pull things out of S15, strip the space off, look for something 
greater-than or equal-to I6.  Problem was this test was *failing*.  Putting 
diagnostics in I found out that S2 wasn't getting converted correctly to an 
integer in I2.  *puzzle*.

Changing the conversion part of the code to:

         save S2
         bsr ATOI
         restore I2

Fixes the problem.  The insane thing is that ATOI essentially loads a 
string register from the stack, coverts it, and then puts it back as an 
integer -- almost exactly what was failing before.


Reply via email to