<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <p>Nice!</p>
    <p>This is now at GitHub.</p>
    <p>Thanks,</p>
    <div class="moz-cite-prefix">On 2026-10-04 4:23 PM, Facundo Javier
      Gelatti via Cuis-dev wrote:<br>
    </div>
    <blockquote type="cite"
cite="mid:CAC1UKnYhG0CNKYPbmq0yLqhFUiwH8bvE+DqRThMyrbehQrybzA@mail.gmail.com">
      <meta http-equiv="content-type" content="text/html; charset=UTF-8">
      <div dir="ltr">Hello!<br>
        <br>
        <div>While working on the last bugfix, I've noticed that <span
            style="font-family:monospace">Object>>printAs:limitedTo:</span>
          (which is used by <span style="font-family:monospace">#printString</span>
          and <span style="font-family:monospace">#printStringLimitedTo:</span>)
          answers 4 characters more than its limit whenever it has to
          truncate the string.</div>
        <div><br>
        </div>
        <div>For example, with <span style="font-family:monospace">Object
            new</span> (whose print string is <span
            style="font-family:monospace">'an Object'</span>, 9
          characters):</div>
        <div style="margin-left:40px"><span
            style="font-family:monospace">Object new
            printStringLimitedTo: 5 " => 'an Ob[..]' (size 9)"</span><br>
          <span style="font-family:monospace">Object new
            printStringLimitedTo: 9 " => 'an Object[..]' (size 13)"</span><br>
        </div>
        <br>
        I don't know if this is the expected behavior, but I've found it
        a bit weird. I think there are two problems in the current
        implementation:<br>
        1. When the string is truncated, it just appends the <span
          style="font-family:monospace">'[..]'</span> marker on top of
        the limit, so every truncated result is 4 characters over the
        limit.<br>
        2. It compares with <span style="font-family:monospace">#<</span>
        instead of <span style="font-family:monospace">#<=,</span>
        so a description that fits the limit exactly is truncated and
        gets the marker too (like in the second example above).<br>
        <br>
        So, I attach three change sets:<br>
        <ul>
          <li><span style="font-family:monospace">KernelTests-Object_printAs_limitedTo</span> incudes
            two new tests in <span style="font-family:monospace">ObjectTest</span>
            that reproduce the problematic cases.</li>
          <li><span style="font-family:monospace">CuisCore-Object_printAs_limitedTo</span> contains
            the fix to <span style="font-family:monospace">Object>>printAs:limitedTo:</span>,
            and the same fix in <span style="font-family:monospace">BreakingMethodWrapper>>printAs:limitedTo:</span>
            (the wrapper is a ProtoObject subclass with its own copy of
            the method).</li>
          <li><span style="font-family:monospace">CuisCore-printStringLimitedTo_sendersLeaveRoomForMarker</span>
            is a small change to two senders that calculate the limit
            using a floor of 1. With the old code, a truncated string
            showed one character plus the marker. But with the new code
            it would show just the marker, so I raised the floor to 5
            (so it works as before, since the marker has size 4).</li>
        </ul>
        <div>I wasn't sure what the expected behavior was, so I went to
          what I thought could be reasonable, or at least be an
          improvement to what we already have.</div>
        <div><br>
        </div>
        Cheers!<br>
        Facu</div>
      <br>
      <fieldset class="moz-mime-attachment-header"></fieldset>
    </blockquote>
    <pre class="moz-signature" cols="72">-- 
Juan Vuletich
<a class="moz-txt-link-abbreviated" href="http://www.cuis.st">www.cuis.st</a>
github.com/jvuletich
researchgate.net/profile/Juan-Vuletich
independent.academia.edu/JuanVuletich
patents.justia.com/inventor/juan-manuel-vuletich</pre>
  </body>
</html>