From unknown Sun Sep 07 01:05:44 2025 X-Loop: help-debbugs@gnu.org Subject: bug#77042: 31.0.50; `string-pixel-width' could return wrong results with alternative properties Resent-From: David Ponce Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 15 Mar 2025 22:45:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 77042 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: 77042@debbugs.gnu.org X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Received: via spool by submit@debbugs.gnu.org id=B.174207865313373 (code B ref -1); Sat, 15 Mar 2025 22:45:02 +0000 Received: (at submit) by debbugs.gnu.org; 15 Mar 2025 22:44:13 +0000 Received: from localhost ([127.0.0.1]:43957 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ttaEm-0003Td-SY for submit@debbugs.gnu.org; Sat, 15 Mar 2025 18:44:13 -0400 Received: from lists.gnu.org ([2001:470:142::17]:56650) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1ttaEf-0003SA-TK for submit@debbugs.gnu.org; Sat, 15 Mar 2025 18:44:07 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ttaEU-0001QD-Rg for bug-gnu-emacs@gnu.org; Sat, 15 Mar 2025 18:43:56 -0400 Received: from smtp-22.smtpout.orange.fr ([80.12.242.22] helo=smtp.smtpout.orange.fr) by eggs.gnu.org with esmtps (TLS1.2:RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ttaEQ-0000k5-Ia for bug-gnu-emacs@gnu.org; Sat, 15 Mar 2025 18:43:54 -0400 Received: from [192.168.1.21] ([90.112.40.65]) by smtp.orange.fr with ESMTPA id taE9ttwqMtsZCtaECtTW3P; Sat, 15 Mar 2025 23:43:37 +0100 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=orange.fr; s=t20230301; t=1742078617; bh=qtd6R66U7O3K/YW/6I0mYvlmeioj/ebb5GmwEqtE3Ag=; h=Message-ID:Date:MIME-Version:To:From:Subject; b=dUZzHXzJ+xMCUeawPSOe/GCONT9Cndwfg+Z/7IC54Vd3DJcZ3DdQCqEOvPsPdO8RQ QPh7gJfM0XxbQEdOowI/BDJhvl4cCt3UO2O9U4MNRbJa5ehlrVAKZRTk+V8ME+um1C FtKKvGrTd7Ociumd9G7La96BxsKrjOr3M2HYhjrKb0S0VJ4CzpHGWBEwuWwtRyd0wM txIUDTOPbMALk0rE6czaZQ7yQ35k99kzH8lHF8wA+4bcgtJjvkGT3N31tpWItar2Js Veeg42CMwYTHRMKQCPlvuwN8C6mTiNoW3rifGlyyKuVAmpGAquUTWA4l9mzf4m/HLq OHvIn4sEebCTQ== X-ME-Helo: [192.168.1.21] X-ME-Auth: ZGFfdmlkQHdhbmFkb28uZnI= X-ME-Date: Sat, 15 Mar 2025 23:43:37 +0100 X-ME-IP: 90.112.40.65 Content-Type: multipart/mixed; boundary="------------udi4nmJIYNhs0yfttxQVjW50" Message-ID: <3db4b9d9-e060-46e8-9aab-70feaef7212b@orange.fr> Date: Sat, 15 Mar 2025 23:43:33 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Content-Language: fr, en-US From: David Ponce Received-SPF: pass client-ip=80.12.242.22; envelope-from=da_vid@orange.fr; helo=smtp.smtpout.orange.fr X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: 1.0 (+) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.0 (/) This is a multi-part message in MIME format. --------------udi4nmJIYNhs0yfttxQVjW50 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Hello, During some experiments to use `char-property-alias-alist', I discovered that `string-pixel-width' could return wrong results with alternative properties that affect how the string is displayed. Here is a simple recipe to eval in the *scratch* buffer, that illustrates the issue: (let ((text0 (propertize "This text" 'face 'variable-pitch)) (text1 (propertize "This text" 'my-face 'variable-pitch))) (with-temp-buffer (setq-local char-property-alias-alist '((face my-face))) (list (string-pixel-width text0 (current-buffer)) (string-pixel-width text1 (current-buffer))))) Normally the result should be a list of two identical numbers. But, on my config, the result is (89 117) instead of expected (89 89). This problem is similar to the already solved case with `face-remapping-alist', as is the solution. I propose the attached patch to fix this and slightly simplify the code. On my configuration, the new code has no significant impact on performance. The patch also includes several tests of `string-pixel-width' that could be added to test/lisp/misc-test.el. As expected with the current implementation, all tests pass but the test `misc-test-string-pixel-width-char-property-alias-alist'. With the patch applied, all tests pass: ----------------------- emacs -batch -l ./test/lisp/misc-tests.el -f ert-run-tests-batch-and-exit [...] passed 6/11 misc-test-string-pixel-width-char-property-alias-alist (0.001030 sec) passed 7/11 misc-test-string-pixel-width-display-line-numbers (0.000057 sec) passed 8/11 misc-test-string-pixel-width-face-remapping-alist (0.000065 sec) passed 9/11 misc-test-string-pixel-width-line-and-wrap-prefix (0.000240 sec) [...] ----------------------- Here is a possible Change log: 2025-03-15 David Ponce Fix possible wrong result of `string-pixel-width' with alternate properties. Create regression tests. * lisp/emacs-lisp/subr-x.el (string-pixel-width): Like for `face-remapping-alist', use in work buffer the value of `char-property-alias-alist' local to the passed buffer, to correctly compute pixel width. * test/lisp/misc-tests.el: Add tests for `string-pixel-width'. Thanks --------------udi4nmJIYNhs0yfttxQVjW50 Content-Type: text/x-patch; charset=UTF-8; name="string-pixel-width-fix-alt-props-plus-tests-V0.patch" Content-Disposition: attachment; filename="string-pixel-width-fix-alt-props-plus-tests-V0.patch" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2xpc3AvZW1hY3MtbGlzcC9zdWJyLXguZWwgYi9saXNwL2VtYWNzLWxp c3Avc3Vici14LmVsCmluZGV4IDRjZTdiZDAwZjMxLi5mYzllMDA4MTAyYyAxMDA2NDQKLS0t IGEvbGlzcC9lbWFjcy1saXNwL3N1YnIteC5lbAorKysgYi9saXNwL2VtYWNzLWxpc3Avc3Vi ci14LmVsCkBAIC0zODksOCArMzg5LDggQEAgd2l0aC13b3JrLWJ1ZmZlcgogOzs7IyMjYXV0 b2xvYWQKIChkZWZ1biBzdHJpbmctcGl4ZWwtd2lkdGggKHN0cmluZyAmb3B0aW9uYWwgYnVm ZmVyKQogICAiUmV0dXJuIHRoZSB3aWR0aCBvZiBTVFJJTkcgaW4gcGl4ZWxzLgotSWYgQlVG RkVSIGlzIG5vbi1uaWwsIHVzZSB0aGUgZmFjZSByZW1hcHBpbmdzIGZyb20gdGhhdCBidWZm ZXIgd2hlbgotZGV0ZXJtaW5pbmcgdGhlIHdpZHRoLgorSWYgQlVGRkVSIGlzIG5vbi1uaWws IHVzZSB0aGUgZmFjZSByZW1hcHBpbmdzIGFuZCBhbHRlcm5hdGl2ZQorcHJvcGVydGllcyBm cm9tIHRoYXQgYnVmZmVyIHdoZW4gZGV0ZXJtaW5pbmcgdGhlIHdpZHRoLgogSWYgeW91IGNh bGwgdGhpcyBmdW5jdGlvbiB0byBtZWFzdXJlIHBpeGVsIHdpZHRoIG9mIGEgc3RyaW5nCiB3 aXRoIGVtYmVkZGVkIG5ld2xpbmVzLCBpdCByZXR1cm5zIHRoZSB3aWR0aCBvZiB0aGUgd2lk ZXN0CiBzdWJzdHJpbmcgdGhhdCBkb2VzIG5vdCBpbmNsdWRlIG5ld2xpbmVzLiIKQEAgLTQw MCwxMSArNDAwLDE2IEBAIHN0cmluZy1waXhlbC13aWR0aAogICAgIDs7IEtlZXBpbmcgYSB3 b3JrIGJ1ZmZlciBhcm91bmQgaXMgbW9yZSBlZmZpY2llbnQgdGhhbiBjcmVhdGluZyBhCiAg ICAgOzsgbmV3IHRlbXBvcmFyeSBidWZmZXIuCiAgICAgKHdpdGgtd29yay1idWZmZXIKLSAg ICAgIChpZiBidWZmZXIKLSAgICAgICAgICAoc2V0cS1sb2NhbCBmYWNlLXJlbWFwcGluZy1h bGlzdAotICAgICAgICAgICAgICAgICAgICAgICh3aXRoLWN1cnJlbnQtYnVmZmVyIGJ1ZmZl cgotICAgICAgICAgICAgICAgICAgICAgICAgZmFjZS1yZW1hcHBpbmctYWxpc3QpKQotICAg ICAgICAoa2lsbC1sb2NhbC12YXJpYWJsZSAnZmFjZS1yZW1hcHBpbmctYWxpc3QpKQorICAg ICAgOzsgU2V0dXAgY3VycmVudCBidWZmZXIgdG8gY29ycmVjdGx5IGNvbXB1dGUgcGl4ZWwg d2lkdGguCisgICAgICAod2hlbiBidWZmZXIKKyAgICAgICAgKGlmIChsb2NhbC12YXJpYWJs ZS1wICdmYWNlLXJlbWFwcGluZy1hbGlzdCBidWZmZXIpCisgICAgICAgICAgICAoc2V0cS1s b2NhbCBmYWNlLXJlbWFwcGluZy1hbGlzdAorICAgICAgICAgICAgICAgICAgICAgICAgKGJ1 ZmZlci1sb2NhbC12YWx1ZSAnZmFjZS1yZW1hcHBpbmctYWxpc3QKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyKSkpCisgICAgICAgIChpZiAo bG9jYWwtdmFyaWFibGUtcCAnY2hhci1wcm9wZXJ0eS1hbGlhcy1hbGlzdCBidWZmZXIpCisg ICAgICAgICAgICAoc2V0cS1sb2NhbCBjaGFyLXByb3BlcnR5LWFsaWFzLWFsaXN0CisgICAg ICAgICAgICAgICAgICAgICAgICAoYnVmZmVyLWxvY2FsLXZhbHVlICdjaGFyLXByb3BlcnR5 LWFsaWFzLWFsaXN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGJ1ZmZlcikpKSkKICAgICAgIDs7IEF2b2lkIGRlYWN0aXZhdGluZyB0aGUgcmVnaW9u IGFzIHNpZGUgZWZmZWN0LgogICAgICAgKGxldCAoZGVhY3RpdmF0ZS1tYXJrKQogICAgICAg ICAoaW5zZXJ0IHN0cmluZykpCkBAIC00MTIsMTMgKzQxNyw5IEBAIHN0cmluZy1waXhlbC13 aWR0aAogICAgICAgOzsgYnVmZmVycyAoZS5nLiBnbG9iYWxseSksIGl0IGJyZWFrcyB3aWR0 aCBjYWxjdWxhdGlvbgogICAgICAgOzsgKGJ1ZyM1OTMxMSkuICBEaXNhYmxlIGBsaW5lLXBy ZWZpeCcgYW5kIGB3cmFwLXByZWZpeCcsCiAgICAgICA7OyBmb3IgdGhlIHNhbWUgcmVhc29u LgotICAgICAgKGFkZC10ZXh0LXByb3BlcnRpZXMKLSAgICAgICAocG9pbnQtbWluKSAocG9p bnQtbWF4KSAnKGRpc3BsYXktbGluZS1udW1iZXJzLWRpc2FibGUgdCkpCi0gICAgICA7OyBQ cmVmZXIgYHJlbW92ZS10ZXh0LXByb3BlcnRpZXMnIHRvIGBwcm9wZXJ0aXplJyB0byBhdm9p ZAotICAgICAgOzsgY3JlYXRpbmcgYSBuZXcgc3RyaW5nIG9uIGVhY2ggY2FsbC4KLSAgICAg IChyZW1vdmUtdGV4dC1wcm9wZXJ0aWVzCi0gICAgICAgKHBvaW50LW1pbikgKHBvaW50LW1h eCkgJyhsaW5lLXByZWZpeCBuaWwgd3JhcC1wcmVmaXggbmlsKSkKLSAgICAgIChzZXRxIGxp bmUtcHJlZml4IG5pbCB3cmFwLXByZWZpeCBuaWwpCisgICAgICAoYWRkLXRleHQtcHJvcGVy dGllcyAocG9pbnQtbWluKSAocG9pbnQtbWF4KQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgJyggZGlzcGxheS1saW5lLW51bWJlcnMtZGlzYWJsZSB0CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBsaW5lLXByZWZpeCAiIiB3cmFwLXByZWZpeCAiIikpCiAgICAgICAo Y2FyIChidWZmZXItdGV4dC1waXhlbC1zaXplIG5pbCBuaWwgdCkpKSkpCiAKIDs7OyMjI2F1 dG9sb2FkCmRpZmYgLS1naXQgYS90ZXN0L2xpc3AvbWlzYy10ZXN0cy5lbCBiL3Rlc3QvbGlz cC9taXNjLXRlc3RzLmVsCmluZGV4IDI5YmYyZjAyZDBjLi5mYjgyNGMxYTczMCAxMDA2NDQK LS0tIGEvdGVzdC9saXNwL21pc2MtdGVzdHMuZWwKKysrIGIvdGVzdC9saXNwL21pc2MtdGVz dHMuZWwKQEAgLTE3OCw2ICsxNzgsNTcgQEAgbWlzYy0tZHVwbGljYXRlLWR3aW0KICAgICAg ICAgICAgIChzaG91bGQgKGVxdWFsIChwb2ludCkgKCsgMTQgdmRlbHRhIGhkZWx0YSkpKQog ICAgICAgICAgICAgKHNob3VsZCAoZXF1YWwgKG1hcmspICgrIDIgaGRlbHRhKSkpKSkpKSkp CiAKKyhlcnQtZGVmdGVzdCBtaXNjLXRlc3Qtc3RyaW5nLXBpeGVsLXdpZHRoLWNoYXItcHJv cGVydHktYWxpYXMtYWxpc3QgKCkKKyAgIlRlc3QgYHN0cmluZy1waXhlbC13aWR0aCcgd2l0 aCBgY2hhci1wcm9wZXJ0eS1hbGlhcy1hbGlzdCcuIgorICAod2l0aC10ZW1wLWJ1ZmZlcgor ICAgIChsZXQgKCh0ZXh0MCAocHJvcGVydGl6ZSAiVGhpcyB0ZXh0IgorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAnZGlzcGxheSAieHh4eCIKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJ2ZhY2UgJ3ZhcmlhYmxlLXBpdGNoKSkKKyAgICAgICAgICAodGV4dDEgKHBy b3BlcnRpemUgIlRoaXMgdGV4dCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ215 LWRpc3BsYXkgInh4eHgiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdteS1mYWNl ICd2YXJpYWJsZS1waXRjaCkpKQorICAgICAgKHNldHEtbG9jYWwgY2hhci1wcm9wZXJ0eS1h bGlhcy1hbGlzdCAnKChkaXNwbGF5IG15LWRpc3BsYXkpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZhY2UgbXktZmFjZSkpKQorICAgICAgKHNo b3VsZCAoPSAoc3RyaW5nLXBpeGVsLXdpZHRoIHRleHQwIChjdXJyZW50LWJ1ZmZlcikpCisg ICAgICAgICAgICAgICAgIChzdHJpbmctcGl4ZWwtd2lkdGggdGV4dDEgKGN1cnJlbnQtYnVm ZmVyKSkpKSkpKQorCisoZXJ0LWRlZnRlc3QgbWlzYy10ZXN0LXN0cmluZy1waXhlbC13aWR0 aC1mYWNlLXJlbWFwcGluZy1hbGlzdCAoKQorICAiVGVzdCBgc3RyaW5nLXBpeGVsLXdpZHRo JyB3aXRoIGBmYWNlLXJlbWFwcGluZy1hbGlzdCcuIgorICAod2l0aC10ZW1wLWJ1ZmZlcgor ICAgIChzZXRxLWxvY2FsIGZhY2UtcmVtYXBwaW5nLWFsaXN0ICcoKHZhcmlhYmxlLXBpdGNo IC4gZGVmYXVsdCkpKQorICAgIChsZXQgKCh0ZXh0MCAocHJvcGVydGl6ZSAiVGhpcyB0ZXh0 IiAnZmFjZSAnZGVmYXVsdCkpCisgICAgICAgICAgKHRleHQxIChwcm9wZXJ0aXplICJUaGlz IHRleHQiICdmYWNlICd2YXJpYWJsZS1waXRjaCkpKQorICAgICAgKHNob3VsZCAoPSAoc3Ry aW5nLXBpeGVsLXdpZHRoIHRleHQwIChjdXJyZW50LWJ1ZmZlcikpCisgICAgICAgICAgICAg ICAgIChzdHJpbmctcGl4ZWwtd2lkdGggdGV4dDEgKGN1cnJlbnQtYnVmZmVyKSkpKSkpKQor CisoZXJ0LWRlZnRlc3QgbWlzYy10ZXN0LXN0cmluZy1waXhlbC13aWR0aC1saW5lLWFuZC13 cmFwLXByZWZpeCAoKQorICAiVGVzdCBgc3RyaW5nLXBpeGVsLXdpZHRoJyB3aXRoIGBsaW5l LXByZWZpeCcgYW5kIGB3cmFwLXByZWZpeCcuIgorICAobGV0ICgobHAgKGRlZmF1bHQtdmFs dWUgJ2xpbmUtcHJlZml4KSkKKyAgICAgICAgKHdwIChkZWZhdWx0LXZhbHVlICdsaW5lLXBy ZWZpeCkpCisgICAgICAgICh0ZXh0IChtYWtlLXN0cmluZyAyMDAwID9YKSkKKyAgICAgICAg dzAgdzEpCisgICAgKHVud2luZC1wcm90ZWN0CisgICAgICAgIChwcm9nbgorICAgICAgICAg IChzZXRxLWRlZmF1bHQgbGluZS1wcmVmaXggbmlsIHdyYXAtcHJlZml4IG5pbCkKKyAgICAg ICAgICAoc2V0cSB3MCAoc3RyaW5nLXBpeGVsLXdpZHRoIHRleHQpKQorICAgICAgICAgIChz ZXRxLWRlZmF1bHQgbGluZS1wcmVmaXggIlBQUFAiIHdyYXAtcHJlZml4ICJXV1dXIikKKyAg ICAgICAgICAoc2V0cSB3MSAoc3RyaW5nLXBpeGVsLXdpZHRoIHRleHQpKSkKKyAgICAgIChz ZXRxLWRlZmF1bHQgbGluZS1wcmVmaXggbHAgd3JhcC1wcmVmaXggd3ApKQorICAgIChzaG91 bGQgKD0gdzAgdzEpKSkpCisKKyhlcnQtZGVmdGVzdCBtaXNjLXRlc3Qtc3RyaW5nLXBpeGVs LXdpZHRoLWRpc3BsYXktbGluZS1udW1iZXJzICgpCisgICJUZXN0IGBzdHJpbmctcGl4ZWwt d2lkdGgnIHdpdGggYGRpc3BsYXktbGluZS1udW1iZXJzJy4iCisgIChsZXQgKChkbG4gKGRl ZmF1bHQtdmFsdWUgJ2Rpc3BsYXktbGluZS1udW1iZXJzKSkKKyAgICAgICAgKHRleHQgIlRo aXMgdGV4dCIpCisgICAgICAgIHcwIHcxKQorICAgICh1bndpbmQtcHJvdGVjdAorICAgICAg ICAocHJvZ24KKyAgICAgICAgICAoc2V0cS1kZWZhdWx0IGRpc3BsYXktbGluZS1udW1iZXJz IG5pbCkKKyAgICAgICAgICAoc2V0cSB3MCAoc3RyaW5nLXBpeGVsLXdpZHRoIHRleHQpKQor ICAgICAgICAgIChzZXRxLWRlZmF1bHQgZGlzcGxheS1saW5lLW51bWJlcnMgdCkKKyAgICAg ICAgICAoc2V0cSB3MSAoc3RyaW5nLXBpeGVsLXdpZHRoIHRleHQpKSkKKyAgICAgIChzZXRx LWRlZmF1bHQgZGlzcGxheS1saW5lLW51bWJlcnMgZGxuKSkKKyAgICAoc2hvdWxkICg9IHcw IHcxKSkpKQogCiAocHJvdmlkZSAnbWlzYy10ZXN0cykKIDs7OyBtaXNjLXRlc3RzLmVsIGVu ZHMgaGVyZQo= --------------udi4nmJIYNhs0yfttxQVjW50-- From unknown Sun Sep 07 01:05:44 2025 X-Loop: help-debbugs@gnu.org Subject: bug#77042: 31.0.50; `string-pixel-width' could return wrong results with alternative properties Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 16 Mar 2025 07:32:04 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 77042 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: David Ponce Cc: 77042@debbugs.gnu.org Received: via spool by 77042-submit@debbugs.gnu.org id=B77042.174211029430206 (code B ref 77042); Sun, 16 Mar 2025 07:32:04 +0000 Received: (at 77042) by debbugs.gnu.org; 16 Mar 2025 07:31:34 +0000 Received: from localhost ([127.0.0.1]:45164 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ttiT6-0007qs-6z for submit@debbugs.gnu.org; Sun, 16 Mar 2025 03:31:33 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:49520) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1ttiT0-0007p1-SG for 77042@debbugs.gnu.org; Sun, 16 Mar 2025 03:31:28 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ttiSt-0004sl-SI; Sun, 16 Mar 2025 03:31:19 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=tDQ1BhrMAlufvn3Yh8gN5h2l+W2wdTUcOzNC/LpUt9o=; b=mzleHkOxK99m nfXQ6TMz/XlP2/pKHBKOCfbjQ8gVNiBFjbLQH77X0VR28xpwJTXjDCYZ93lQtSlVyGR/Tza/ZEkNd rfHIZ4vI3iqFLMw6djIW0lBYVHlUMfO7IFjFQFx5U4ladUP9y8XxJ67RzFTj7sAVqrYChaBe9oZH2 iyYbXaIINQiedIcCPFYRGP0CBQMHHE7VHsIMaGEDddmGuS+n39PX4adQGiYeYX8ZPv+7X90NaLhh0 1LQ6FDuLC1lY9olrJJKKY/MxMQFAEDRdiLZSTozgIpfW/rfqGPJXm2CuE0r0QYYdfhc5aR3rmpmba ec6FceHk8BzDIeKYVEKl7w==; Date: Sun, 16 Mar 2025 09:31:17 +0200 Message-Id: <864iztv3cq.fsf@gnu.org> From: Eli Zaretskii In-Reply-To: <3db4b9d9-e060-46e8-9aab-70feaef7212b@orange.fr> (bug-gnu-emacs@gnu.org) References: <3db4b9d9-e060-46e8-9aab-70feaef7212b@orange.fr> X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > Date: Sat, 15 Mar 2025 23:43:33 +0100 > From: David Ponce via "Bug reports for GNU Emacs, > the Swiss army knife of text editors" > > (let ((text0 (propertize "This text" 'face 'variable-pitch)) > (text1 (propertize "This text" 'my-face 'variable-pitch))) > (with-temp-buffer > (setq-local char-property-alias-alist '((face my-face))) > (list > (string-pixel-width text0 (current-buffer)) > (string-pixel-width text1 (current-buffer))))) > > Normally the result should be a list of two identical numbers. But, > on my config, the result is (89 117) instead of expected (89 89). > > This problem is similar to the already solved case with > `face-remapping-alist', as is the solution. > > I propose the attached patch to fix this and slightly simplify the > code. On my configuration, the new code has no significant impact on > performance. Thanks, please see some comments below. > + ;; Setup current buffer to correctly compute pixel width. > + (when buffer > + (if (local-variable-p 'face-remapping-alist buffer) > + (setq-local face-remapping-alist > + (buffer-local-value 'face-remapping-alist > + buffer))) > + (if (local-variable-p 'char-property-alias-alist buffer) > + (setq-local char-property-alias-alist > + (buffer-local-value 'char-property-alias-alist > + buffer)))) What about default-text-properties? shouldn't it get the same treatment? > - (add-text-properties > - (point-min) (point-max) '(display-line-numbers-disable t)) > - ;; Prefer `remove-text-properties' to `propertize' to avoid > - ;; creating a new string on each call. > - (remove-text-properties > - (point-min) (point-max) '(line-prefix nil wrap-prefix nil)) > - (setq line-prefix nil wrap-prefix nil) > + (add-text-properties (point-min) (point-max) > + '( display-line-numbers-disable t > + line-prefix "" wrap-prefix "")) What is the rationale for this hunk? Was there any problem with the original code? In any case, please don't leave a space after an opening parenthesis. From unknown Sun Sep 07 01:05:44 2025 X-Loop: help-debbugs@gnu.org Subject: bug#77042: 31.0.50; `string-pixel-width' could return wrong results with alternative properties Resent-From: David Ponce Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 16 Mar 2025 10:32:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 77042 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Eli Zaretskii Cc: 77042@debbugs.gnu.org Received: via spool by 77042-submit@debbugs.gnu.org id=B77042.17421210921307 (code B ref 77042); Sun, 16 Mar 2025 10:32:02 +0000 Received: (at 77042) by debbugs.gnu.org; 16 Mar 2025 10:31:32 +0000 Received: from localhost ([127.0.0.1]:45570 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ttlHI-0000L1-1z for submit@debbugs.gnu.org; Sun, 16 Mar 2025 06:31:32 -0400 Received: from smtp-77.smtpout.orange.fr ([80.12.242.77]:40467 helo=smtp.smtpout.orange.fr) by debbugs.gnu.org with esmtps (TLS1.2:RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from ) id 1ttlHD-0000Kb-M1 for 77042@debbugs.gnu.org; Sun, 16 Mar 2025 06:31:29 -0400 Received: from [192.168.1.21] ([90.112.40.65]) by smtp.orange.fr with ESMTPA id tlH7tEqcWTyMMtlHAtNGyC; Sun, 16 Mar 2025 11:31:25 +0100 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=orange.fr; s=t20230301; t=1742121086; bh=ShfOu5JmRpn3CklkrvoTJNy0IRHkRh8wEhfc4xHyWgY=; h=Message-ID:Date:MIME-Version:Subject:To:From; b=CIJ+paxJpG3JLeVzHenhX/efgwuXQsZpxOoZEYGVyQMjNR4VCpcu/xSs4AGRDtVCK ZUwKCKJvqjKORGr5JItP9QVA+atjZIzyM0bHtaO51bRDvkHtLHcRjs9imitOvG8zI3 1oGUaJrxW1gQowyMYAAH1cNMfmzVUkaMa26FvImfZPn6xobYL8Hi9Cd3bQaPknpm9T OFfFaB+gtoHFSzIjVM4LAQr6Q8T8NjSsG7KYZTJvJ1W2udSIqD8kQ6UDZBSexiP6kV P7QXTXZ0LgkCAyL57RkjhI0yWPVnKBLqCwY0q21ahbc011P3iMln9+ztSdb1eGzNyO fn6LMLWvfqJvg== X-ME-Helo: [192.168.1.21] X-ME-Auth: ZGFfdmlkQHdhbmFkb28uZnI= X-ME-Date: Sun, 16 Mar 2025 11:31:25 +0100 X-ME-IP: 90.112.40.65 Content-Type: multipart/mixed; boundary="------------DdtotphJjdggqgkg0ukPavGl" Message-ID: <9d622af7-6ab4-433c-9248-25854776df8b@orange.fr> Date: Sun, 16 Mar 2025 11:31:21 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird References: <3db4b9d9-e060-46e8-9aab-70feaef7212b@orange.fr> <864iztv3cq.fsf@gnu.org> Content-Language: fr, en-US From: David Ponce In-Reply-To: <864iztv3cq.fsf@gnu.org> X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) This is a multi-part message in MIME format. --------------DdtotphJjdggqgkg0ukPavGl Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 2025-03-16 08:31, Eli Zaretskii wrote: >> Date: Sat, 15 Mar 2025 23:43:33 +0100 >> From: David Ponce via "Bug reports for GNU Emacs, >> the Swiss army knife of text editors" >> >> (let ((text0 (propertize "This text" 'face 'variable-pitch)) >> (text1 (propertize "This text" 'my-face 'variable-pitch))) >> (with-temp-buffer >> (setq-local char-property-alias-alist '((face my-face))) >> (list >> (string-pixel-width text0 (current-buffer)) >> (string-pixel-width text1 (current-buffer))))) >> >> Normally the result should be a list of two identical numbers. But, >> on my config, the result is (89 117) instead of expected (89 89). >> >> This problem is similar to the already solved case with >> `face-remapping-alist', as is the solution. >> >> I propose the attached patch to fix this and slightly simplify the >> code. On my configuration, the new code has no significant impact on >> performance. > > Thanks, please see some comments below. > >> + ;; Setup current buffer to correctly compute pixel width. >> + (when buffer >> + (if (local-variable-p 'face-remapping-alist buffer) >> + (setq-local face-remapping-alist >> + (buffer-local-value 'face-remapping-alist >> + buffer))) >> + (if (local-variable-p 'char-property-alias-alist buffer) >> + (setq-local char-property-alias-alist >> + (buffer-local-value 'char-property-alias-alist >> + buffer)))) > > What about default-text-properties? shouldn't it get the same > treatment? Yes, you are right. I updated the patch to include this case and a new test. 2025-03-16 David Ponce Fix possible wrong result of `string-pixel-width' with alternate and default properties. Create regression tests. * lisp/emacs-lisp/subr-x.el (string-pixel-width): Like for `face-remapping-alist', use in work buffer the value of `char-property-alias-alist' and `default-text-properties' local to the passed buffer, to correctly compute pixel width. * test/lisp/misc-tests.el: Add tests for `string-pixel-width'. > >> - (add-text-properties >> - (point-min) (point-max) '(display-line-numbers-disable t)) >> - ;; Prefer `remove-text-properties' to `propertize' to avoid >> - ;; creating a new string on each call. >> - (remove-text-properties >> - (point-min) (point-max) '(line-prefix nil wrap-prefix nil)) >> - (setq line-prefix nil wrap-prefix nil) >> + (add-text-properties (point-min) (point-max) >> + '( display-line-numbers-disable t >> + line-prefix "" wrap-prefix "")) > > What is the rationale for this hunk? Was there any problem with the > original code? No problem. But the new code is simpler and should be more efficient. To disable `display-line-numbers', `line-prefix' and `wrap-prefix', an unique call to `add-text-properties' can achieve the same result as the previous implementation which called `add-text properties', then `remove-text-properties', then `setq' twice. > > In any case, please don't leave a space after an opening parenthesis. Sorry, I thought it was correct to add a space after the opening parenthesis to correctly indent a lisp data expression. I rewrote the expression to avoid this. Regarding the proposed tests, I noticed that those involving faces always pass when run in batch, but work as expected interactively. Probably because face attributes don't make sense in batch mode? I mentioned this point in a comment before such tests, because I don't know if it is possible to limit them to be run interactively. Thank you for your review and help! --------------DdtotphJjdggqgkg0ukPavGl Content-Type: text/x-patch; charset=UTF-8; name="string-pixel-width-fix-alt-def-props-plus-tests-V1.patch" Content-Disposition: attachment; filename="string-pixel-width-fix-alt-def-props-plus-tests-V1.patch" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2xpc3AvZW1hY3MtbGlzcC9zdWJyLXguZWwgYi9saXNwL2VtYWNzLWxp c3Avc3Vici14LmVsCmluZGV4IDRjZTdiZDAwZjMxLi42NDE0ZWNhYjM5NCAxMDA2NDQKLS0t IGEvbGlzcC9lbWFjcy1saXNwL3N1YnIteC5lbAorKysgYi9saXNwL2VtYWNzLWxpc3Avc3Vi ci14LmVsCkBAIC0zODksOCArMzg5LDggQEAgd2l0aC13b3JrLWJ1ZmZlcgogOzs7IyMjYXV0 b2xvYWQKIChkZWZ1biBzdHJpbmctcGl4ZWwtd2lkdGggKHN0cmluZyAmb3B0aW9uYWwgYnVm ZmVyKQogICAiUmV0dXJuIHRoZSB3aWR0aCBvZiBTVFJJTkcgaW4gcGl4ZWxzLgotSWYgQlVG RkVSIGlzIG5vbi1uaWwsIHVzZSB0aGUgZmFjZSByZW1hcHBpbmdzIGZyb20gdGhhdCBidWZm ZXIgd2hlbgotZGV0ZXJtaW5pbmcgdGhlIHdpZHRoLgorSWYgQlVGRkVSIGlzIG5vbi1uaWws IHVzZSB0aGUgZmFjZSByZW1hcHBpbmdzLCBhbHRlcm5hdGl2ZSBhbmQgZGVmYXVsdAorcHJv cGVydGllcyBmcm9tIHRoYXQgYnVmZmVyIHdoZW4gZGV0ZXJtaW5pbmcgdGhlIHdpZHRoLgog SWYgeW91IGNhbGwgdGhpcyBmdW5jdGlvbiB0byBtZWFzdXJlIHBpeGVsIHdpZHRoIG9mIGEg c3RyaW5nCiB3aXRoIGVtYmVkZGVkIG5ld2xpbmVzLCBpdCByZXR1cm5zIHRoZSB3aWR0aCBv ZiB0aGUgd2lkZXN0CiBzdWJzdHJpbmcgdGhhdCBkb2VzIG5vdCBpbmNsdWRlIG5ld2xpbmVz LiIKQEAgLTQwMCwxMSArNDAwLDE0IEBAIHN0cmluZy1waXhlbC13aWR0aAogICAgIDs7IEtl ZXBpbmcgYSB3b3JrIGJ1ZmZlciBhcm91bmQgaXMgbW9yZSBlZmZpY2llbnQgdGhhbiBjcmVh dGluZyBhCiAgICAgOzsgbmV3IHRlbXBvcmFyeSBidWZmZXIuCiAgICAgKHdpdGgtd29yay1i dWZmZXIKLSAgICAgIChpZiBidWZmZXIKLSAgICAgICAgICAoc2V0cS1sb2NhbCBmYWNlLXJl bWFwcGluZy1hbGlzdAotICAgICAgICAgICAgICAgICAgICAgICh3aXRoLWN1cnJlbnQtYnVm ZmVyIGJ1ZmZlcgotICAgICAgICAgICAgICAgICAgICAgICAgZmFjZS1yZW1hcHBpbmctYWxp c3QpKQotICAgICAgICAoa2lsbC1sb2NhbC12YXJpYWJsZSAnZmFjZS1yZW1hcHBpbmctYWxp c3QpKQorICAgICAgOzsgU2V0dXAgY3VycmVudCBidWZmZXIgdG8gY29ycmVjdGx5IGNvbXB1 dGUgcGl4ZWwgd2lkdGguCisgICAgICAod2hlbiBidWZmZXIKKyAgICAgICAgKGRvbGlzdCAo diAnKGZhY2UtcmVtYXBwaW5nLWFsaXN0CisgICAgICAgICAgICAgICAgICAgICBjaGFyLXBy b3BlcnR5LWFsaWFzLWFsaXN0CisgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0LXRleHQt cHJvcGVydGllcykpCisgICAgICAgICAgKGlmIChsb2NhbC12YXJpYWJsZS1wIHYgYnVmZmVy KQorICAgICAgICAgICAgICAoc2V0IChtYWtlLWxvY2FsLXZhcmlhYmxlIHYpCisgICAgICAg ICAgICAgICAgICAgKGJ1ZmZlci1sb2NhbC12YWx1ZSB2IGJ1ZmZlcikpKSkpCiAgICAgICA7 OyBBdm9pZCBkZWFjdGl2YXRpbmcgdGhlIHJlZ2lvbiBhcyBzaWRlIGVmZmVjdC4KICAgICAg IChsZXQgKGRlYWN0aXZhdGUtbWFyaykKICAgICAgICAgKGluc2VydCBzdHJpbmcpKQpAQCAt NDEzLDEyICs0MTYsOCBAQCBzdHJpbmctcGl4ZWwtd2lkdGgKICAgICAgIDs7IChidWcjNTkz MTEpLiAgRGlzYWJsZSBgbGluZS1wcmVmaXgnIGFuZCBgd3JhcC1wcmVmaXgnLAogICAgICAg OzsgZm9yIHRoZSBzYW1lIHJlYXNvbi4KICAgICAgIChhZGQtdGV4dC1wcm9wZXJ0aWVzCi0g ICAgICAgKHBvaW50LW1pbikgKHBvaW50LW1heCkgJyhkaXNwbGF5LWxpbmUtbnVtYmVycy1k aXNhYmxlIHQpKQotICAgICAgOzsgUHJlZmVyIGByZW1vdmUtdGV4dC1wcm9wZXJ0aWVzJyB0 byBgcHJvcGVydGl6ZScgdG8gYXZvaWQKLSAgICAgIDs7IGNyZWF0aW5nIGEgbmV3IHN0cmlu ZyBvbiBlYWNoIGNhbGwuCi0gICAgICAocmVtb3ZlLXRleHQtcHJvcGVydGllcwotICAgICAg IChwb2ludC1taW4pIChwb2ludC1tYXgpICcobGluZS1wcmVmaXggbmlsIHdyYXAtcHJlZml4 IG5pbCkpCi0gICAgICAoc2V0cSBsaW5lLXByZWZpeCBuaWwgd3JhcC1wcmVmaXggbmlsKQor ICAgICAgIChwb2ludC1taW4pIChwb2ludC1tYXgpCisgICAgICAgJyhkaXNwbGF5LWxpbmUt bnVtYmVycy1kaXNhYmxlIHQgbGluZS1wcmVmaXggIiIgd3JhcC1wcmVmaXggIiIpKQogICAg ICAgKGNhciAoYnVmZmVyLXRleHQtcGl4ZWwtc2l6ZSBuaWwgbmlsIHQpKSkpKQogCiA7Ozsj IyNhdXRvbG9hZApkaWZmIC0tZ2l0IGEvdGVzdC9saXNwL21pc2MtdGVzdHMuZWwgYi90ZXN0 L2xpc3AvbWlzYy10ZXN0cy5lbAppbmRleCAyOWJmMmYwMmQwYy4uNWIxMzQzMTQ4YWYgMTAw NjQ0Ci0tLSBhL3Rlc3QvbGlzcC9taXNjLXRlc3RzLmVsCisrKyBiL3Rlc3QvbGlzcC9taXNj LXRlc3RzLmVsCkBAIC0xNzgsNiArMTc4LDcwIEBAIG1pc2MtLWR1cGxpY2F0ZS1kd2ltCiAg ICAgICAgICAgICAoc2hvdWxkIChlcXVhbCAocG9pbnQpICgrIDE0IHZkZWx0YSBoZGVsdGEp KSkKICAgICAgICAgICAgIChzaG91bGQgKGVxdWFsIChtYXJrKSAoKyAyIGhkZWx0YSkpKSkp KSkpKQogCis7OyBDaGVjayB0aGF0IGBzdHJpbmctcGl4ZWwtd2lkdGgnIHJldHVybnMgYSBj b25zaXN0ZW50IHJlc3VsdCBpbiB0aGUKKzs7IHZhcmlvdXMgc2l0dWF0aW9ucyB0aGF0IGNh biBsZWFkIHRvIGVycm9uZW91cyByZXN1bHRzLgorKGVydC1kZWZ0ZXN0IG1pc2MtdGVzdC1z dHJpbmctcGl4ZWwtd2lkdGgtY2hhci1wcm9wZXJ0eS1hbGlhcy1hbGlzdCAoKQorICAiVGVz dCBgc3RyaW5nLXBpeGVsLXdpZHRoJyB3aXRoIGBjaGFyLXByb3BlcnR5LWFsaWFzLWFsaXN0 Jy4iCisgICh3aXRoLXRlbXAtYnVmZmVyCisgICAgKGxldCAoKHRleHQwIChwcm9wZXJ0aXpl ICJUaGlzIHRleHQiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkaXNwbGF5ICJ4 eHh4IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZmFjZSAndmFyaWFibGUtcGl0 Y2gpKQorICAgICAgICAgICh0ZXh0MSAocHJvcGVydGl6ZSAiVGhpcyB0ZXh0IgorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAnbXktZGlzcGxheSAieHh4eCIKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJ215LWZhY2UgJ3ZhcmlhYmxlLXBpdGNoKSkpCisgICAgICAo c2V0cS1sb2NhbCBjaGFyLXByb3BlcnR5LWFsaWFzLWFsaXN0ICcoKGRpc3BsYXkgbXktZGlz cGxheSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo ZmFjZSBteS1mYWNlKSkpCisgICAgICAoc2hvdWxkICg9IChzdHJpbmctcGl4ZWwtd2lkdGgg dGV4dDAgKGN1cnJlbnQtYnVmZmVyKSkKKyAgICAgICAgICAgICAgICAgKHN0cmluZy1waXhl bC13aWR0aCB0ZXh0MSAoY3VycmVudC1idWZmZXIpKSkpKSkpCisKKzs7IFRoaXMgdGVzdCBu ZXZlciBmYWlscyBpbiBiYXRjaCBtb2RlLgorKGVydC1kZWZ0ZXN0IG1pc2MtdGVzdC1zdHJp bmctcGl4ZWwtd2lkdGgtZmFjZS1yZW1hcHBpbmctYWxpc3QgKCkKKyAgIlRlc3QgYHN0cmlu Zy1waXhlbC13aWR0aCcgd2l0aCBgZmFjZS1yZW1hcHBpbmctYWxpc3QnLiIKKyAgKHdpdGgt dGVtcC1idWZmZXIKKyAgICAoc2V0cS1sb2NhbCBmYWNlLXJlbWFwcGluZy1hbGlzdCAnKCh2 YXJpYWJsZS1waXRjaCAuIGRlZmF1bHQpKSkKKyAgICAobGV0ICgodGV4dDAgKHByb3BlcnRp emUgIlRoaXMgdGV4dCIgJ2ZhY2UgJ2RlZmF1bHQpKQorICAgICAgICAgICh0ZXh0MSAocHJv cGVydGl6ZSAiVGhpcyB0ZXh0IiAnZmFjZSAndmFyaWFibGUtcGl0Y2gpKSkKKyAgICAgIChz aG91bGQgKD0gKHN0cmluZy1waXhlbC13aWR0aCB0ZXh0MCAoY3VycmVudC1idWZmZXIpKQor ICAgICAgICAgICAgICAgICAoc3RyaW5nLXBpeGVsLXdpZHRoIHRleHQxIChjdXJyZW50LWJ1 ZmZlcikpKSkpKSkKKworKGVydC1kZWZ0ZXN0IG1pc2MtdGVzdC1zdHJpbmctcGl4ZWwtd2lk dGgtZGVmYXVsdC10ZXh0LXByb3BlcnRpZXMgKCkKKyAgIlRlc3QgYHN0cmluZy1waXhlbC13 aWR0aCcgd2l0aCBgZGVmYXVsdC10ZXh0LXByb3BlcnRpZXMnLiIKKyAgKHdpdGgtdGVtcC1i dWZmZXIKKyAgICAoc2V0cS1sb2NhbCBkZWZhdWx0LXRleHQtcHJvcGVydGllcyAnKGRpc3Bs YXkgIlhYWFgiKSkKKyAgICAobGV0ICgodGV4dDAgKHByb3BlcnRpemUgIlRoaXMgdGV4dCIg J2Rpc3BsYXkgIlhYWFgiKSkKKyAgICAgICAgICAodGV4dDEgIlRoaXMgdGV4dCIpKQorICAg ICAgKHNob3VsZCAoPSAoc3RyaW5nLXBpeGVsLXdpZHRoIHRleHQwIChjdXJyZW50LWJ1ZmZl cikpCisgICAgICAgICAgICAgICAgIChzdHJpbmctcGl4ZWwtd2lkdGggdGV4dDEgKGN1cnJl bnQtYnVmZmVyKSkpKSkpKQorCisoZXJ0LWRlZnRlc3QgbWlzYy10ZXN0LXN0cmluZy1waXhl bC13aWR0aC1saW5lLWFuZC13cmFwLXByZWZpeCAoKQorICAiVGVzdCBgc3RyaW5nLXBpeGVs LXdpZHRoJyB3aXRoIGBsaW5lLXByZWZpeCcgYW5kIGB3cmFwLXByZWZpeCcuIgorICAobGV0 ICgobHAgKGRlZmF1bHQtdmFsdWUgJ2xpbmUtcHJlZml4KSkKKyAgICAgICAgKHdwIChkZWZh dWx0LXZhbHVlICdsaW5lLXByZWZpeCkpCisgICAgICAgICh0ZXh0IChtYWtlLXN0cmluZyAy MDAwID9YKSkKKyAgICAgICAgdzAgdzEpCisgICAgKHVud2luZC1wcm90ZWN0CisgICAgICAg IChwcm9nbgorICAgICAgICAgIChzZXRxLWRlZmF1bHQgbGluZS1wcmVmaXggbmlsIHdyYXAt cHJlZml4IG5pbCkKKyAgICAgICAgICAoc2V0cSB3MCAoc3RyaW5nLXBpeGVsLXdpZHRoIHRl eHQpKQorICAgICAgICAgIChzZXRxLWRlZmF1bHQgbGluZS1wcmVmaXggIlBQUFAiIHdyYXAt cHJlZml4ICJXV1dXIikKKyAgICAgICAgICAoc2V0cSB3MSAoc3RyaW5nLXBpeGVsLXdpZHRo IHRleHQpKSkKKyAgICAgIChzZXRxLWRlZmF1bHQgbGluZS1wcmVmaXggbHAgd3JhcC1wcmVm aXggd3ApKQorICAgIChzaG91bGQgKD0gdzAgdzEpKSkpCisKKzs7IFRoaXMgdGVzdCBuZXZl ciBmYWlscyBpbiBiYXRjaCBtb2RlLgorKGVydC1kZWZ0ZXN0IG1pc2MtdGVzdC1zdHJpbmct cGl4ZWwtd2lkdGgtZGlzcGxheS1saW5lLW51bWJlcnMgKCkKKyAgIlRlc3QgYHN0cmluZy1w aXhlbC13aWR0aCcgd2l0aCBgZGlzcGxheS1saW5lLW51bWJlcnMnLiIKKyAgKGxldCAoKGRs biAoZGVmYXVsdC12YWx1ZSAnZGlzcGxheS1saW5lLW51bWJlcnMpKQorICAgICAgICAodGV4 dCAiVGhpcyB0ZXh0IikKKyAgICAgICAgdzAgdzEpCisgICAgKHVud2luZC1wcm90ZWN0Cisg ICAgICAgIChwcm9nbgorICAgICAgICAgIChzZXRxLWRlZmF1bHQgZGlzcGxheS1saW5lLW51 bWJlcnMgbmlsKQorICAgICAgICAgIChzZXRxIHcwIChzdHJpbmctcGl4ZWwtd2lkdGggdGV4 dCkpCisgICAgICAgICAgKHNldHEtZGVmYXVsdCBkaXNwbGF5LWxpbmUtbnVtYmVycyB0KQor ICAgICAgICAgIChzZXRxIHcxIChzdHJpbmctcGl4ZWwtd2lkdGggdGV4dCkpKQorICAgICAg KHNldHEtZGVmYXVsdCBkaXNwbGF5LWxpbmUtbnVtYmVycyBkbG4pKQorICAgIChzaG91bGQg KD0gdzAgdzEpKSkpCiAKIChwcm92aWRlICdtaXNjLXRlc3RzKQogOzs7IG1pc2MtdGVzdHMu ZWwgZW5kcyBoZXJlCg== --------------DdtotphJjdggqgkg0ukPavGl-- From unknown Sun Sep 07 01:05:44 2025 MIME-Version: 1.0 X-Mailer: MIME-tools 5.505 (Entity 5.505) X-Loop: help-debbugs@gnu.org From: help-debbugs@gnu.org (GNU bug Tracking System) To: David Ponce Subject: bug#77042: closed (Re: bug#77042: 31.0.50; `string-pixel-width' could return wrong results with alternative properties) Message-ID: References: <86r02rn9kg.fsf@gnu.org> <3db4b9d9-e060-46e8-9aab-70feaef7212b@orange.fr> X-Gnu-PR-Message: they-closed 77042 X-Gnu-PR-Package: emacs Reply-To: 77042@debbugs.gnu.org Date: Thu, 20 Mar 2025 12:59:02 +0000 Content-Type: multipart/mixed; boundary="----------=_1742475542-18497-1" This is a multi-part message in MIME format... ------------=_1742475542-18497-1 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Your bug report #77042: 31.0.50; `string-pixel-width' could return wrong results with alter= native properties which was filed against the emacs package, has been closed. The explanation is attached below, along with your original report. If you require more details, please reply to 77042@debbugs.gnu.org. --=20 77042: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D77042 GNU Bug Tracking System Contact help-debbugs@gnu.org with problems ------------=_1742475542-18497-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at 77042-done) by debbugs.gnu.org; 20 Mar 2025 12:58:12 +0000 Received: from localhost ([127.0.0.1]:56076 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1tvFTP-0004nD-Kb for submit@debbugs.gnu.org; Thu, 20 Mar 2025 08:58:11 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:44280) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1tvFTM-0004mm-J1 for 77042-done@debbugs.gnu.org; Thu, 20 Mar 2025 08:58:09 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tvFTG-0001Ty-DM; Thu, 20 Mar 2025 08:58:02 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=EkMQuJCymJTGO2r4tnLyDS7HenTRvNJMFep4haqb1GQ=; b=fTZMgH80IupW eoRFrZYSnf7tX7z8pn/q55hy0rJPAzoOTRi8TUxyKMvnBoW1tejwaBhixSQ/x8yOZCeLTK3Tt0WGO MS44hBvegiB19LLYcbdvW/KBFET3ExRFQsyvznLSDiW+QkUf17RqWsvjA/grnArFYmSpm3EXZSDNJ 1fxbnowQ3LHdjwBpT7wM+nl7IUqLx3ZtR7F+HXpIJfWx8dQeer1y58o4L4bHQSkVfy4xIN9lq8AdE UvvntSMfjERU2iDuosprRAZ+aBmaKI/1ShL/TIdiVo6I4Bho8M/GAxRhSzTe8EbEKNomZAOwHemBX mJOSPge5ou0oFm6ZEulWVg==; Date: Thu, 20 Mar 2025 14:57:51 +0200 Message-Id: <86r02rn9kg.fsf@gnu.org> From: Eli Zaretskii To: David Ponce In-Reply-To: <9d622af7-6ab4-433c-9248-25854776df8b@orange.fr> (message from David Ponce on Sun, 16 Mar 2025 11:31:21 +0100) Subject: Re: bug#77042: 31.0.50; `string-pixel-width' could return wrong results with alternative properties References: <3db4b9d9-e060-46e8-9aab-70feaef7212b@orange.fr> <864iztv3cq.fsf@gnu.org> <9d622af7-6ab4-433c-9248-25854776df8b@orange.fr> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 77042-done Cc: 77042-done@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > Date: Sun, 16 Mar 2025 11:31:21 +0100 > Cc: 77042@debbugs.gnu.org > From: David Ponce > > Thank you for your review and help! Thanks, I installed the patch on the master branch, and I'm therefore closing this bug. ------------=_1742475542-18497-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at submit) by debbugs.gnu.org; 15 Mar 2025 22:44:13 +0000 Received: from localhost ([127.0.0.1]:43957 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ttaEm-0003Td-SY for submit@debbugs.gnu.org; Sat, 15 Mar 2025 18:44:13 -0400 Received: from lists.gnu.org ([2001:470:142::17]:56650) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1ttaEf-0003SA-TK for submit@debbugs.gnu.org; Sat, 15 Mar 2025 18:44:07 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ttaEU-0001QD-Rg for bug-gnu-emacs@gnu.org; Sat, 15 Mar 2025 18:43:56 -0400 Received: from smtp-22.smtpout.orange.fr ([80.12.242.22] helo=smtp.smtpout.orange.fr) by eggs.gnu.org with esmtps (TLS1.2:RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ttaEQ-0000k5-Ia for bug-gnu-emacs@gnu.org; Sat, 15 Mar 2025 18:43:54 -0400 Received: from [192.168.1.21] ([90.112.40.65]) by smtp.orange.fr with ESMTPA id taE9ttwqMtsZCtaECtTW3P; Sat, 15 Mar 2025 23:43:37 +0100 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=orange.fr; s=t20230301; t=1742078617; bh=qtd6R66U7O3K/YW/6I0mYvlmeioj/ebb5GmwEqtE3Ag=; h=Message-ID:Date:MIME-Version:To:From:Subject; b=dUZzHXzJ+xMCUeawPSOe/GCONT9Cndwfg+Z/7IC54Vd3DJcZ3DdQCqEOvPsPdO8RQ QPh7gJfM0XxbQEdOowI/BDJhvl4cCt3UO2O9U4MNRbJa5ehlrVAKZRTk+V8ME+um1C FtKKvGrTd7Ociumd9G7La96BxsKrjOr3M2HYhjrKb0S0VJ4CzpHGWBEwuWwtRyd0wM txIUDTOPbMALk0rE6czaZQ7yQ35k99kzH8lHF8wA+4bcgtJjvkGT3N31tpWItar2Js Veeg42CMwYTHRMKQCPlvuwN8C6mTiNoW3rifGlyyKuVAmpGAquUTWA4l9mzf4m/HLq OHvIn4sEebCTQ== X-ME-Helo: [192.168.1.21] X-ME-Auth: ZGFfdmlkQHdhbmFkb28uZnI= X-ME-Date: Sat, 15 Mar 2025 23:43:37 +0100 X-ME-IP: 90.112.40.65 Content-Type: multipart/mixed; boundary="------------udi4nmJIYNhs0yfttxQVjW50" Message-ID: <3db4b9d9-e060-46e8-9aab-70feaef7212b@orange.fr> Date: Sat, 15 Mar 2025 23:43:33 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird To: bug-gnu-emacs@gnu.org Content-Language: fr, en-US From: David Ponce Subject: 31.0.50; `string-pixel-width' could return wrong results with alternative properties Received-SPF: pass client-ip=80.12.242.22; envelope-from=da_vid@orange.fr; helo=smtp.smtpout.orange.fr X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.0 (/) This is a multi-part message in MIME format. --------------udi4nmJIYNhs0yfttxQVjW50 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Hello, During some experiments to use `char-property-alias-alist', I discovered that `string-pixel-width' could return wrong results with alternative properties that affect how the string is displayed. Here is a simple recipe to eval in the *scratch* buffer, that illustrates the issue: (let ((text0 (propertize "This text" 'face 'variable-pitch)) (text1 (propertize "This text" 'my-face 'variable-pitch))) (with-temp-buffer (setq-local char-property-alias-alist '((face my-face))) (list (string-pixel-width text0 (current-buffer)) (string-pixel-width text1 (current-buffer))))) Normally the result should be a list of two identical numbers. But, on my config, the result is (89 117) instead of expected (89 89). This problem is similar to the already solved case with `face-remapping-alist', as is the solution. I propose the attached patch to fix this and slightly simplify the code. On my configuration, the new code has no significant impact on performance. The patch also includes several tests of `string-pixel-width' that could be added to test/lisp/misc-test.el. As expected with the current implementation, all tests pass but the test `misc-test-string-pixel-width-char-property-alias-alist'. With the patch applied, all tests pass: ----------------------- emacs -batch -l ./test/lisp/misc-tests.el -f ert-run-tests-batch-and-exit [...] passed 6/11 misc-test-string-pixel-width-char-property-alias-alist (0.001030 sec) passed 7/11 misc-test-string-pixel-width-display-line-numbers (0.000057 sec) passed 8/11 misc-test-string-pixel-width-face-remapping-alist (0.000065 sec) passed 9/11 misc-test-string-pixel-width-line-and-wrap-prefix (0.000240 sec) [...] ----------------------- Here is a possible Change log: 2025-03-15 David Ponce Fix possible wrong result of `string-pixel-width' with alternate properties. Create regression tests. * lisp/emacs-lisp/subr-x.el (string-pixel-width): Like for `face-remapping-alist', use in work buffer the value of `char-property-alias-alist' local to the passed buffer, to correctly compute pixel width. * test/lisp/misc-tests.el: Add tests for `string-pixel-width'. Thanks --------------udi4nmJIYNhs0yfttxQVjW50 Content-Type: text/x-patch; charset=UTF-8; name="string-pixel-width-fix-alt-props-plus-tests-V0.patch" Content-Disposition: attachment; filename="string-pixel-width-fix-alt-props-plus-tests-V0.patch" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2xpc3AvZW1hY3MtbGlzcC9zdWJyLXguZWwgYi9saXNwL2VtYWNzLWxp c3Avc3Vici14LmVsCmluZGV4IDRjZTdiZDAwZjMxLi5mYzllMDA4MTAyYyAxMDA2NDQKLS0t IGEvbGlzcC9lbWFjcy1saXNwL3N1YnIteC5lbAorKysgYi9saXNwL2VtYWNzLWxpc3Avc3Vi ci14LmVsCkBAIC0zODksOCArMzg5LDggQEAgd2l0aC13b3JrLWJ1ZmZlcgogOzs7IyMjYXV0 b2xvYWQKIChkZWZ1biBzdHJpbmctcGl4ZWwtd2lkdGggKHN0cmluZyAmb3B0aW9uYWwgYnVm ZmVyKQogICAiUmV0dXJuIHRoZSB3aWR0aCBvZiBTVFJJTkcgaW4gcGl4ZWxzLgotSWYgQlVG RkVSIGlzIG5vbi1uaWwsIHVzZSB0aGUgZmFjZSByZW1hcHBpbmdzIGZyb20gdGhhdCBidWZm ZXIgd2hlbgotZGV0ZXJtaW5pbmcgdGhlIHdpZHRoLgorSWYgQlVGRkVSIGlzIG5vbi1uaWws IHVzZSB0aGUgZmFjZSByZW1hcHBpbmdzIGFuZCBhbHRlcm5hdGl2ZQorcHJvcGVydGllcyBm cm9tIHRoYXQgYnVmZmVyIHdoZW4gZGV0ZXJtaW5pbmcgdGhlIHdpZHRoLgogSWYgeW91IGNh bGwgdGhpcyBmdW5jdGlvbiB0byBtZWFzdXJlIHBpeGVsIHdpZHRoIG9mIGEgc3RyaW5nCiB3 aXRoIGVtYmVkZGVkIG5ld2xpbmVzLCBpdCByZXR1cm5zIHRoZSB3aWR0aCBvZiB0aGUgd2lk ZXN0CiBzdWJzdHJpbmcgdGhhdCBkb2VzIG5vdCBpbmNsdWRlIG5ld2xpbmVzLiIKQEAgLTQw MCwxMSArNDAwLDE2IEBAIHN0cmluZy1waXhlbC13aWR0aAogICAgIDs7IEtlZXBpbmcgYSB3 b3JrIGJ1ZmZlciBhcm91bmQgaXMgbW9yZSBlZmZpY2llbnQgdGhhbiBjcmVhdGluZyBhCiAg ICAgOzsgbmV3IHRlbXBvcmFyeSBidWZmZXIuCiAgICAgKHdpdGgtd29yay1idWZmZXIKLSAg ICAgIChpZiBidWZmZXIKLSAgICAgICAgICAoc2V0cS1sb2NhbCBmYWNlLXJlbWFwcGluZy1h bGlzdAotICAgICAgICAgICAgICAgICAgICAgICh3aXRoLWN1cnJlbnQtYnVmZmVyIGJ1ZmZl cgotICAgICAgICAgICAgICAgICAgICAgICAgZmFjZS1yZW1hcHBpbmctYWxpc3QpKQotICAg ICAgICAoa2lsbC1sb2NhbC12YXJpYWJsZSAnZmFjZS1yZW1hcHBpbmctYWxpc3QpKQorICAg ICAgOzsgU2V0dXAgY3VycmVudCBidWZmZXIgdG8gY29ycmVjdGx5IGNvbXB1dGUgcGl4ZWwg d2lkdGguCisgICAgICAod2hlbiBidWZmZXIKKyAgICAgICAgKGlmIChsb2NhbC12YXJpYWJs ZS1wICdmYWNlLXJlbWFwcGluZy1hbGlzdCBidWZmZXIpCisgICAgICAgICAgICAoc2V0cS1s b2NhbCBmYWNlLXJlbWFwcGluZy1hbGlzdAorICAgICAgICAgICAgICAgICAgICAgICAgKGJ1 ZmZlci1sb2NhbC12YWx1ZSAnZmFjZS1yZW1hcHBpbmctYWxpc3QKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyKSkpCisgICAgICAgIChpZiAo bG9jYWwtdmFyaWFibGUtcCAnY2hhci1wcm9wZXJ0eS1hbGlhcy1hbGlzdCBidWZmZXIpCisg ICAgICAgICAgICAoc2V0cS1sb2NhbCBjaGFyLXByb3BlcnR5LWFsaWFzLWFsaXN0CisgICAg ICAgICAgICAgICAgICAgICAgICAoYnVmZmVyLWxvY2FsLXZhbHVlICdjaGFyLXByb3BlcnR5 LWFsaWFzLWFsaXN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGJ1ZmZlcikpKSkKICAgICAgIDs7IEF2b2lkIGRlYWN0aXZhdGluZyB0aGUgcmVnaW9u IGFzIHNpZGUgZWZmZWN0LgogICAgICAgKGxldCAoZGVhY3RpdmF0ZS1tYXJrKQogICAgICAg ICAoaW5zZXJ0IHN0cmluZykpCkBAIC00MTIsMTMgKzQxNyw5IEBAIHN0cmluZy1waXhlbC13 aWR0aAogICAgICAgOzsgYnVmZmVycyAoZS5nLiBnbG9iYWxseSksIGl0IGJyZWFrcyB3aWR0 aCBjYWxjdWxhdGlvbgogICAgICAgOzsgKGJ1ZyM1OTMxMSkuICBEaXNhYmxlIGBsaW5lLXBy ZWZpeCcgYW5kIGB3cmFwLXByZWZpeCcsCiAgICAgICA7OyBmb3IgdGhlIHNhbWUgcmVhc29u LgotICAgICAgKGFkZC10ZXh0LXByb3BlcnRpZXMKLSAgICAgICAocG9pbnQtbWluKSAocG9p bnQtbWF4KSAnKGRpc3BsYXktbGluZS1udW1iZXJzLWRpc2FibGUgdCkpCi0gICAgICA7OyBQ cmVmZXIgYHJlbW92ZS10ZXh0LXByb3BlcnRpZXMnIHRvIGBwcm9wZXJ0aXplJyB0byBhdm9p ZAotICAgICAgOzsgY3JlYXRpbmcgYSBuZXcgc3RyaW5nIG9uIGVhY2ggY2FsbC4KLSAgICAg IChyZW1vdmUtdGV4dC1wcm9wZXJ0aWVzCi0gICAgICAgKHBvaW50LW1pbikgKHBvaW50LW1h eCkgJyhsaW5lLXByZWZpeCBuaWwgd3JhcC1wcmVmaXggbmlsKSkKLSAgICAgIChzZXRxIGxp bmUtcHJlZml4IG5pbCB3cmFwLXByZWZpeCBuaWwpCisgICAgICAoYWRkLXRleHQtcHJvcGVy dGllcyAocG9pbnQtbWluKSAocG9pbnQtbWF4KQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgJyggZGlzcGxheS1saW5lLW51bWJlcnMtZGlzYWJsZSB0CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBsaW5lLXByZWZpeCAiIiB3cmFwLXByZWZpeCAiIikpCiAgICAgICAo Y2FyIChidWZmZXItdGV4dC1waXhlbC1zaXplIG5pbCBuaWwgdCkpKSkpCiAKIDs7OyMjI2F1 dG9sb2FkCmRpZmYgLS1naXQgYS90ZXN0L2xpc3AvbWlzYy10ZXN0cy5lbCBiL3Rlc3QvbGlz cC9taXNjLXRlc3RzLmVsCmluZGV4IDI5YmYyZjAyZDBjLi5mYjgyNGMxYTczMCAxMDA2NDQK LS0tIGEvdGVzdC9saXNwL21pc2MtdGVzdHMuZWwKKysrIGIvdGVzdC9saXNwL21pc2MtdGVz dHMuZWwKQEAgLTE3OCw2ICsxNzgsNTcgQEAgbWlzYy0tZHVwbGljYXRlLWR3aW0KICAgICAg ICAgICAgIChzaG91bGQgKGVxdWFsIChwb2ludCkgKCsgMTQgdmRlbHRhIGhkZWx0YSkpKQog ICAgICAgICAgICAgKHNob3VsZCAoZXF1YWwgKG1hcmspICgrIDIgaGRlbHRhKSkpKSkpKSkp CiAKKyhlcnQtZGVmdGVzdCBtaXNjLXRlc3Qtc3RyaW5nLXBpeGVsLXdpZHRoLWNoYXItcHJv cGVydHktYWxpYXMtYWxpc3QgKCkKKyAgIlRlc3QgYHN0cmluZy1waXhlbC13aWR0aCcgd2l0 aCBgY2hhci1wcm9wZXJ0eS1hbGlhcy1hbGlzdCcuIgorICAod2l0aC10ZW1wLWJ1ZmZlcgor ICAgIChsZXQgKCh0ZXh0MCAocHJvcGVydGl6ZSAiVGhpcyB0ZXh0IgorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAnZGlzcGxheSAieHh4eCIKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJ2ZhY2UgJ3ZhcmlhYmxlLXBpdGNoKSkKKyAgICAgICAgICAodGV4dDEgKHBy b3BlcnRpemUgIlRoaXMgdGV4dCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ215 LWRpc3BsYXkgInh4eHgiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdteS1mYWNl ICd2YXJpYWJsZS1waXRjaCkpKQorICAgICAgKHNldHEtbG9jYWwgY2hhci1wcm9wZXJ0eS1h bGlhcy1hbGlzdCAnKChkaXNwbGF5IG15LWRpc3BsYXkpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZhY2UgbXktZmFjZSkpKQorICAgICAgKHNo b3VsZCAoPSAoc3RyaW5nLXBpeGVsLXdpZHRoIHRleHQwIChjdXJyZW50LWJ1ZmZlcikpCisg ICAgICAgICAgICAgICAgIChzdHJpbmctcGl4ZWwtd2lkdGggdGV4dDEgKGN1cnJlbnQtYnVm ZmVyKSkpKSkpKQorCisoZXJ0LWRlZnRlc3QgbWlzYy10ZXN0LXN0cmluZy1waXhlbC13aWR0 aC1mYWNlLXJlbWFwcGluZy1hbGlzdCAoKQorICAiVGVzdCBgc3RyaW5nLXBpeGVsLXdpZHRo JyB3aXRoIGBmYWNlLXJlbWFwcGluZy1hbGlzdCcuIgorICAod2l0aC10ZW1wLWJ1ZmZlcgor ICAgIChzZXRxLWxvY2FsIGZhY2UtcmVtYXBwaW5nLWFsaXN0ICcoKHZhcmlhYmxlLXBpdGNo IC4gZGVmYXVsdCkpKQorICAgIChsZXQgKCh0ZXh0MCAocHJvcGVydGl6ZSAiVGhpcyB0ZXh0 IiAnZmFjZSAnZGVmYXVsdCkpCisgICAgICAgICAgKHRleHQxIChwcm9wZXJ0aXplICJUaGlz IHRleHQiICdmYWNlICd2YXJpYWJsZS1waXRjaCkpKQorICAgICAgKHNob3VsZCAoPSAoc3Ry aW5nLXBpeGVsLXdpZHRoIHRleHQwIChjdXJyZW50LWJ1ZmZlcikpCisgICAgICAgICAgICAg ICAgIChzdHJpbmctcGl4ZWwtd2lkdGggdGV4dDEgKGN1cnJlbnQtYnVmZmVyKSkpKSkpKQor CisoZXJ0LWRlZnRlc3QgbWlzYy10ZXN0LXN0cmluZy1waXhlbC13aWR0aC1saW5lLWFuZC13 cmFwLXByZWZpeCAoKQorICAiVGVzdCBgc3RyaW5nLXBpeGVsLXdpZHRoJyB3aXRoIGBsaW5l LXByZWZpeCcgYW5kIGB3cmFwLXByZWZpeCcuIgorICAobGV0ICgobHAgKGRlZmF1bHQtdmFs dWUgJ2xpbmUtcHJlZml4KSkKKyAgICAgICAgKHdwIChkZWZhdWx0LXZhbHVlICdsaW5lLXBy ZWZpeCkpCisgICAgICAgICh0ZXh0IChtYWtlLXN0cmluZyAyMDAwID9YKSkKKyAgICAgICAg dzAgdzEpCisgICAgKHVud2luZC1wcm90ZWN0CisgICAgICAgIChwcm9nbgorICAgICAgICAg IChzZXRxLWRlZmF1bHQgbGluZS1wcmVmaXggbmlsIHdyYXAtcHJlZml4IG5pbCkKKyAgICAg ICAgICAoc2V0cSB3MCAoc3RyaW5nLXBpeGVsLXdpZHRoIHRleHQpKQorICAgICAgICAgIChz ZXRxLWRlZmF1bHQgbGluZS1wcmVmaXggIlBQUFAiIHdyYXAtcHJlZml4ICJXV1dXIikKKyAg ICAgICAgICAoc2V0cSB3MSAoc3RyaW5nLXBpeGVsLXdpZHRoIHRleHQpKSkKKyAgICAgIChz ZXRxLWRlZmF1bHQgbGluZS1wcmVmaXggbHAgd3JhcC1wcmVmaXggd3ApKQorICAgIChzaG91 bGQgKD0gdzAgdzEpKSkpCisKKyhlcnQtZGVmdGVzdCBtaXNjLXRlc3Qtc3RyaW5nLXBpeGVs LXdpZHRoLWRpc3BsYXktbGluZS1udW1iZXJzICgpCisgICJUZXN0IGBzdHJpbmctcGl4ZWwt d2lkdGgnIHdpdGggYGRpc3BsYXktbGluZS1udW1iZXJzJy4iCisgIChsZXQgKChkbG4gKGRl ZmF1bHQtdmFsdWUgJ2Rpc3BsYXktbGluZS1udW1iZXJzKSkKKyAgICAgICAgKHRleHQgIlRo aXMgdGV4dCIpCisgICAgICAgIHcwIHcxKQorICAgICh1bndpbmQtcHJvdGVjdAorICAgICAg ICAocHJvZ24KKyAgICAgICAgICAoc2V0cS1kZWZhdWx0IGRpc3BsYXktbGluZS1udW1iZXJz IG5pbCkKKyAgICAgICAgICAoc2V0cSB3MCAoc3RyaW5nLXBpeGVsLXdpZHRoIHRleHQpKQor ICAgICAgICAgIChzZXRxLWRlZmF1bHQgZGlzcGxheS1saW5lLW51bWJlcnMgdCkKKyAgICAg ICAgICAoc2V0cSB3MSAoc3RyaW5nLXBpeGVsLXdpZHRoIHRleHQpKSkKKyAgICAgIChzZXRx LWRlZmF1bHQgZGlzcGxheS1saW5lLW51bWJlcnMgZGxuKSkKKyAgICAoc2hvdWxkICg9IHcw IHcxKSkpKQogCiAocHJvdmlkZSAnbWlzYy10ZXN0cykKIDs7OyBtaXNjLXRlc3RzLmVsIGVu ZHMgaGVyZQo= --------------udi4nmJIYNhs0yfttxQVjW50-- ------------=_1742475542-18497-1--