Ah thanks!

But I think that there is another bug in replacement size test...

(1 to: 20) reject: [:n |
  a := String new: n.
  b := String new: n-1.
  ([a replaceFrom: 1 to: n with: b startingAt: 1] ifError: [nil]) isNil.
]
-> #(2 4 6 8 10 12 14 16 18 20)

I'd expect they all fail, thus an empty #()

2017-11-26 23:09 GMT+01:00 Clément Bera <bera.clement@gmail.com>:
 
Ok fixed in 2282 ! Thanks for reporting

On Sun, Nov 26, 2017 at 11:04 PM, Clément Bera <bera.clement@gmail.com> wrote:
This is correct: (lessOrEqual instead of less):

        "0 >= start, fail"
cogit CmpCq: (objectMemory integerObjectOf: 0) R: startReg.
jumpOutOfBounds1 := cogit JumpLessOrEqual: 0.
"0 >= replStart, fail"
cogit CmpCq: (objectMemory integerObjectOf: 0) R: repStartReg.
jumpOutOfBounds2 := cogit JumpLessOrEqual: 0.

I can't commit right now (my image has many changes I need to commit and I cannot branch easily on monticello...) Will do tomorrow. Thanks for reporting. 


On Sun, Nov 26, 2017 at 10:58 PM, Clément Bera <bera.clement@gmail.com> wrote:
I think those lines are the problem:

        "0 >= start, fail"
cogit CmpCq: (objectMemory integerObjectOf: 0) R: startReg.
jumpOutOfBounds1 := cogit JumpLess: 0.
"0 >= replStart, fail"
cogit CmpCq: (objectMemory integerObjectOf: 0) R: repStartReg.
jumpOutOfBounds2 := cogit JumpLess: 0.

If this is equal if should jump out of bounds.



On Sun, Nov 26, 2017 at 9:53 PM, Clément Bera <bera.clement@gmail.com> wrote:
Bug seems to be with underflow access on replacement array:

(1 to: 10) collect: [:i| ['123456789' replaceFrom: 1 to: 4 with: 'abcdefgh' startingAt: 0] on: Error do: ['error']]
#('error' ' abc56789' ' abc56789' ' abc56789' ' abc56789' ' abc56789' ' abc56789' ' abc56789' ' abc56789' ' abc56789').

Same thing on arrays since this is common code...

Generated code looks ok... I need to look again I may have inverted some branches.





On Sun, Nov 26, 2017 at 9:37 PM, Clément Bera <bera.clement@gmail.com> wrote:
Ok I have a look.

This is on byte objects...

On Sun, Nov 26, 2017 at 9:07 PM, Nicolas Cellier <nicolas.cellier.aka.nice@gmail.com> wrote:
 
the testTextReplacement3 now fails randomly.
It sometimes omit to signal an Error...




--
Clément Béra
Pharo consortium engineer
Bâtiment B 40, avenue Halley 59650 Villeneuve d'Ascq



--
Clément Béra
Pharo consortium engineer
Bâtiment B 40, avenue Halley 59650 Villeneuve d'Ascq



--
Clément Béra
Pharo consortium engineer
Bâtiment B 40, avenue Halley 59650 Villeneuve d'Ascq



--
Clément Béra
Pharo consortium engineer
Bâtiment B 40, avenue Halley 59650 Villeneuve d'Ascq



--
Clément Béra
Pharo consortium engineer
Bâtiment B 40, avenue Halley 59650 Villeneuve d'Ascq