<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style>
</head>
<body lang="EN-US" link="blue" vlink="#954F72" style="word-wrap:break-word">
<div class="WordSection1">
<p class="MsoNormal">Hi Eliot,</p>
<p class="MsoNormal">I missed that one, sorry. </p>
<p class="MsoNormal">I’ve just tried this example and only got an assertion error (without your fix):</p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">p := [] newProcess suspendedContext: nil.</p>
<p class="MsoNormal">p signalException: Error</p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I just can’t figure out in which case you got the BCR exception :)</p>
<p class="MsoNormal">Thanks!</p>
<p class="MsoNormal">Jaromir</p>
<p class="MsoNormal"><o:p> </o:p></p>
<div style="mso-element:para-border-div;border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal" style="border:none;padding:0in"><b>From: </b><a href="mailto:commits@source.squeak.org">commits@source.squeak.org</a><br>
<b>Sent: </b>Saturday, June 25, 2022 1:58<br>
<b>To: </b><a href="mailto:squeak-dev@lists.squeakfoundation.org">squeak-dev@lists.squeakfoundation.org</a>;
<a href="mailto:packages@lists.squeakfoundation.org">packages@lists.squeakfoundation.org</a><br>
<b>Subject: </b>[squeak-dev] The Trunk: Kernel-eem.1484.mcz</p>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal" style="margin-bottom:12.0pt">Eliot Miranda uploaded a new version of Kernel to project The Trunk:<br>
<a href="http://source.squeak.org/trunk/Kernel-eem.1484.mcz">http://source.squeak.org/trunk/Kernel-eem.1484.mcz</a><br>
<br>
==================== Summary ====================<br>
<br>
Name: Kernel-eem.1484<br>
Author: eem<br>
Time: 24 June 2022, 4:58:09.258613 pm<br>
UUID: f8ca934f-5875-434a-8cec-4d055099bdb6<br>
Ancestors: Kernel-mt.1483<br>
<br>
Fix a bug in Process>>signalException: where signalling a suspended process would cause a cannot return exception.<br>
<br>
=============== Diff against Kernel-mt.1483 ===============<br>
<br>
Item was changed:<br>
  ----- Method: Process>>signalException: (in category 'signaling') -----<br>
  signalException: anException<br>
         "Signal an exception in the receiver process...if the receiver is currently<br>
         suspended, the exception will get signaled when the receiver is resumed.  If
<br>
         the receiver is blocked on a Semaphore, it will be immediately re-awakened<br>
         and the exception will be signaled; if the exception is resumed, then the receiver<br>
         will return to a blocked state unless the blocking Semaphore has excess signals"<br>
  <br>
         "If we are the active process, go ahead and signal the exception"<br>
          self isActiveProcess ifTrue: [^anException signal].<br>
  <br>
         "Suspend myself first to ensure that I won't run away<br>
          in the midst of the following modifications."<br>
+        self isSuspended ifFalse:<br>
+                [self suspend].<br>
+        suspendedContext ifNil: [self error: 'no suspended context!!!!'].<br>
+        suspendedContext := Context<br>
-         self suspend.<br>
-         suspendedContext := Context<br>
                                                                 sender: suspendedContext<br>
                                                                 receiver: anException<br>
                                                                 method: (anException class lookupSelector: #signal)<br>
                                                                 arguments: #().<br>
+        ^self resume!<br>
-         ^self resume!<br>
<br>
<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</body>
</html>