|
From: | Stefan Israelsson Tampe |
Subject: | bug#12883: [2.0.6] CSE bug |
Date: | Wed, 21 Nov 2012 15:32:16 +0100 |
Hi Stefan!
Thanks for your message!
> The intention of unroll is to scan db to check that a commutativeI think this sentence is ungrammatical, or at least I’m lost.
> property for an item going into the function holds for all elements in
> db up to h==h* is found.
The comments in cse.scm convey the big picture, but I miss the
connection between that and the actual code.
From a pure boundary analysis viewpoint, it’s a somewhat clearer.
> Now at each symbol db-len* is the length of db when created so (-
> db-len db-len*) is the length of all elements in db created after the
> symbol name. now db-len* will in the loop lp be decreasing so this
> length is increasing and the base = m is the position in db where we
> scan to last time, the fix was to make sure we scan up to the db-len*
> 'index' e.g. niter had to be corrected by the base m. Otherwise we
> could scan out of the length of db* and the error we saw was
> introduced. Another fix is for unroll to return #t if the length is
> out of the db length but this is probably a bandage, not the bug, the
> bug is most probably fixed by this patch.
>
> Is things more clear now?
Should I apply the patch, or did you want to prepare another one?
I tried further reducing the test case, and synthesizing the new one,
but the little understanding I have of this code doesn’t allow me to do
the latter. Any help would be welcome.
Thanks!
Ludo’.
[Prev in Thread] | Current Thread | [Next in Thread] |