[Mono-devel-list] [Patch] RReader not to rely on bounds checking
Willibald Krenn
Willibald.Krenn at gmx.at
Mon Jan 31 12:09:07 EST 2005
> Well, with your patch you would have never realized that bc wasn't
> working. Then somebody else would have spent that time debugging
> whatever error this bug could induce.
Me wonders why there's no testcase for that.. Me wonders why no-one else
ever spotted this - the AMD64 port is quite 'old' now..
>>The exception will always be thrown, because in my rev. of 'mcs' code,
>>the Parser reads in until RReader.Read returns -1..
>
>
> I don't think that one exception out of 16.000 calls is a problem.
The exception per se is no problem. But why going that route, if it's
that simple to avoid it completely?
> I'm sorry you lost that time, but this doesn't mean that the original
> code was incorrect.
It is incorrect because the catch should read
} catch (System.IndexOutOfRangeException) {
If that was the case, debugging would've been a lot easier.
> What if the ++ operator stops working? do we need to
> add a check for this as well in the Read() code? We don't need to. We
> can write code assuming that ++ will work, as well as we can assume that
> array bounds check will work. If any of those stop working somebody will
> have a hard time debugging it, but it doesn't mean that code written
> with those assumptions is wrong.
Code written with those assumptions is probably bad style, but not
incorrect - I agree with that. What makes RReader.Read incorrect is the
catch filter in combination with the bc dependency.
> I didn't say I don't like the patch. I said that you can commit it. I
> agree in that it's more elegant.
I'll check abcremoval first. Unfortunately it seems the abcremover can't
handle this case (even return index < string.Length ? string[index] :
-1) seems to be a problem.
Ultimate goal would be to eliminate the bounds check completely..
Willi
More information about the Mono-devel-list
mailing list