Announcements/Seaside continuations collision in newer cog vm's

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

Announcements/Seaside continuations collision in newer cog vm's

EstebanLM

Hi,
(yep, I'm copying tree lists because I think is a vm problem, but can be a seaside problem, or a pharo problem)
(yes, it can be MY problem too... but I don't think so... ;)

I'm having this really, really strange problem (because it was working before, and I do not change anything... so, maybe a change in latest changes on pharo 1.3, the version I'm using, is the cause)...
This is the problem:

I'm creating an application who sends an announcement, to edit something... this announcement ends in a WAComponent>>#call: message...

The problem is: continuation execution fires a notification (WARenderNotification), and SubscriptionRegistry>>deliver:to: process the announcement this way:

deliver: anAnnouncement to: subs
       
        subs do:
                [:each |
                [each deliver: anAnnouncement]
                        "each is always in subs, so error will be due to each being last element.
                        So return, nothing more to process"
                        ifCurtailed: [self deliver: anAnnouncement to: ([subs after: each] on: NotFound do: [^self])]]

...and curtailedBlock is being executed... and that throws an error.
This was working on older versions of VM, so maybe this is a recent change?

this error was confirmed in my builds, and also in latest Eliot build. Also... is confirmed NOT being there in older cogs or interpreter.

and btw...

self deliver: anAnnouncement to: ([subs after: each] on: NotFound do: [^self])

shouldn't be

self deliver: anAnnouncement to: ([Array with: (subs after: each)] on: NotFound do: [^self])

because #deliver:to: is expecting a collection, not a registry?

thanks,
Esteban