<body><div id="__MailbirdStyleContent" style="font-size: 10pt;font-family: Arial;color: #000000;text-align: left" dir="ltr">
This one needs an extra merge commit. :-)<div><br></div><div>Best,</div><div>Marcel</div><div class="mb_sig"></div><blockquote class='history_container' type='cite' style='border-left-style:solid;border-width:1px; margin-top:20px; margin-left:0px;padding-left:10px;'>
<p style='color: #AAAAAA; margin-top: 10px;'>Am 06.05.2022 15:24:58 schrieb commits@source.squeak.org <commits@source.squeak.org>:</p><div style='font-family:Arial,Helvetica,sans-serif'>Nicolas Cellier uploaded a new version of Kernel to project The Trunk:<br>http://source.squeak.org/trunk/Kernel-jar.1446.mcz<br><br>==================== Summary ====================<br><br>Name: Kernel-jar.1446<br>Author: jar<br>Time: 6 February 2022, 11:37:44.367834 am<br>UUID: 8598d7f7-f9c4-b648-b9da-378d98b37ae2<br>Ancestors: Kernel-mt.1443<br><br>fix Exception >> signal behavior when signaling an already signaled exception; see discussion in http://lists.squeakfoundation.org/pipermail/squeak-dev/2022-February/218861.html<br><br>Originally there was no check if the receiver has already been signaled which was a bug (subsequent #signal sends to an already signaled exception lead to weird errors); last year I suggested making such a send equivalent to sending #outer but that's a poor fix which is not even compliant with ANSI; this latest approach is both compliant and makes the following example work and pick up the ZeroDivide handler as one might expect:<br><br>[1/0] on: Error do: [:ex | <br> [ex signal] on: ZeroDivide do: [Transcript show: #ZeroDivide]<br> ]<br><br>=============== Diff against Kernel-mt.1443 ===============<br><br>Item was changed:<br> ----- Method: Exception>>signal (in category 'signaling') -----<br> signal<br>+ "Ask ContextHandlers in the sender chain to handle this signal. The default is to execute and return my defaultAction.<br>+ Sending #signal to an already signaled exception generates a new exception of the same type with the same messageText"<br>- "Ask ContextHandlers in the sender chain to handle this signal. The default is to execute and return my defaultAction."<br> <br>+ signalContext ifNotNil: [^self class signal: messageText]. <br>- signalContext ifNotNil: [^self outer]. "re-signalling an already signalled exception is equivalent to sending #outer"<br> signalContext := thisContext contextTag.<br> ^(thisContext nextHandlerContextForSignal: self) handleSignal: self!<br><br><br></div></blockquote>
</div></body>