From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED.blaine.gmane.org!not-for-mail From: Pip Cet Newsgroups: gmane.emacs.bugs Subject: bug#38892: 28.0.50: Hash table printing oddities Date: Fri, 3 Jan 2020 12:13:28 +0000 Message-ID: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="000000000000ed05be059b3b3e8a" Injection-Info: blaine.gmane.org; posting-host="blaine.gmane.org:195.159.176.226"; logging-data="144920"; mail-complaints-to="usenet@blaine.gmane.org" To: 38892@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Fri Jan 03 13:15:22 2020 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([209.51.188.17]) by blaine.gmane.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89) (envelope-from ) id 1inLrK-000bWU-HY for geb-bug-gnu-emacs@m.gmane.org; Fri, 03 Jan 2020 13:15:18 +0100 Original-Received: from localhost ([::1]:51536 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1inLrI-00047p-N4 for geb-bug-gnu-emacs@m.gmane.org; Fri, 03 Jan 2020 07:15:16 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:57531) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1inLr6-0003zx-Nc for bug-gnu-emacs@gnu.org; Fri, 03 Jan 2020 07:15:06 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1inLr5-0002fk-5s for bug-gnu-emacs@gnu.org; Fri, 03 Jan 2020 07:15:04 -0500 Original-Received: from debbugs.gnu.org ([209.51.188.43]:34490) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1inLr4-0002dm-GP for bug-gnu-emacs@gnu.org; Fri, 03 Jan 2020 07:15:02 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1inLr4-0006la-AB for bug-gnu-emacs@gnu.org; Fri, 03 Jan 2020 07:15:02 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Pip Cet Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 03 Jan 2020 12:15:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 38892 X-GNU-PR-Package: emacs X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Original-Received: via spool by submit@debbugs.gnu.org id=B.157805365325927 (code B ref -1); Fri, 03 Jan 2020 12:15:02 +0000 Original-Received: (at submit) by debbugs.gnu.org; 3 Jan 2020 12:14:13 +0000 Original-Received: from localhost ([127.0.0.1]:40463 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1inLqH-0006k6-9y for submit@debbugs.gnu.org; Fri, 03 Jan 2020 07:14:13 -0500 Original-Received: from lists.gnu.org ([209.51.188.17]:58715) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1inLqD-0006jw-TV for submit@debbugs.gnu.org; Fri, 03 Jan 2020 07:14:10 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:53671) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1inLqC-00032Z-KN for bug-gnu-emacs@gnu.org; Fri, 03 Jan 2020 07:14:09 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1inLqB-0006lx-CM for bug-gnu-emacs@gnu.org; Fri, 03 Jan 2020 07:14:08 -0500 Original-Received: from mail-oi1-x22a.google.com ([2607:f8b0:4864:20::22a]:39642) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1inLqA-0006im-63 for bug-gnu-emacs@gnu.org; Fri, 03 Jan 2020 07:14:06 -0500 Original-Received: by mail-oi1-x22a.google.com with SMTP id a67so14139509oib.6 for ; Fri, 03 Jan 2020 04:14:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=3z6orXkX38Tx+IQRv1x6dLDRmwyqL/WLldWOPLkfeec=; b=JnvUrRqXbTh4q9Q4tDFyVI0AsFLHa+AL6/niIFIWHOPn4vTIdil9mjolz1eHdbEZCn HyT1aoUIwGZOMbEDfIUsP5aY2bVkeSC0V/N2zr3qR6pgEo30xZCsC0EhB8Bg0SuFIUB8 JkeXtZwDi63FspGytMYMrzEZuO3cCJ61H1fzGYksRf/nonUlHDAyqiu1y+uUUzPd6AgL 63eyQeTrgdEOtOacil9XRcHV3EBo9yZTvlgV1H5eDUfeZXt8ieCzsuOkGW+t5sePLjHD Ttl2vBbt+1PbgeK9kx7sgoTCCdu4FU2kub6y4W5SdVN8DQCX9Qcs1i6sqLxs95aRONzX MMFA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=3z6orXkX38Tx+IQRv1x6dLDRmwyqL/WLldWOPLkfeec=; b=hwZ8QKsB0a/OsGM9IzsnhnPrMDd8FTa4VoUTzmKhcrmnBfbFClAd4Ip4+hq0lHmqA7 j3Kwx9L7nLxLEo2VLypagk+HpO7Rjf02j1lriV26DhRDBLlDB17ia0SrUPGQbB+3aelN AvpcawWYZxbkmujoz9PYInfwlOM18Fg5YHURbBKXDIrEZNMa9dGLaKTXO9SVNn9XReko CFtm+Vz1NQhbP3NF0F9xSLmwpLWQQ1F4YAMIC/iV4YGRJPnWxXj4vi+d++4M3qSM1rYR /jl4AdP74BAv7nQCFysJGBsJ0CGTiOCeqGBo5P4LViWTRArmyQL4T8m9fWBiaJyV/7NP R4gg== X-Gm-Message-State: APjAAAXWgCopGjpqmBRDJEcGAk6HM25qlk65NMDSMHpnJezydvjCr7xj Zj3TebELQJDsxMM2uiOnmPV1dJK6KReqdvY88LgDSWAq X-Google-Smtp-Source: APXvYqzAOxsdiWarigJxTK8jcH0OMJq0EAIn/UnO+sGASNVmEGm0Jc+eixaamw/nVLEWHFMfHPxwJ/6qjiw/znbJtjQ= X-Received: by 2002:a05:6808:208:: with SMTP id l8mr3660775oie.112.1578053644642; Fri, 03 Jan 2020 04:14:04 -0800 (PST) X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.51.188.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.org gmane.emacs.bugs:174108 Archived-At: --000000000000ed05be059b3b3e8a Content-Type: text/plain; charset="UTF-8" The hash table printing code has some oddities: it will print extra spaces sometimes, won't print as many elements as requested under all circumstances, and behave oddly for empty hash tables when print-length is 0. Currently, this code will result in extra spaces in the hash table output: (let ((h (make-hash-table))) (puthash 1 2 h) (puthash 2 3 h) (remhash 1 h) (format "%S" h)) (let ((h (make-hash-table))) (let ((print-length 0)) (format "%S" h))) In the latter case, the output actually includes "data ( ...)", though "data ()" would be shorter and more accurate. Also, the current code contains an oddity that would make it print fewer than print-length hash cells in the data list: (let ((h (make-hash-table))) (dotimes (i 100) (puthash i i h)) (dotimes (i 99) (remhash i h)) (let ((print-length 1)) (format "%S" h))) will produce "data ( ...)", when it should produce "data (99 99)". Proposed patch attached. --000000000000ed05be059b3b3e8a Content-Type: text/x-patch; charset="US-ASCII"; name="0001-Fix-hash-table-printing.patch" Content-Disposition: attachment; filename="0001-Fix-hash-table-printing.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_k4y4bg790 RnJvbSAyOWZlYjBmYTE5NGZiMWVhOWZlNjUxNDI4YjZmYmUwMWQyMThhYTc1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBQaXAgQ2V0IDxwaXBjZXRAZ21haWwuY29tPgpEYXRlOiBGcmks IDMgSmFuIDIwMjAgMTI6MDA6NDQgKzAwMDAKU3ViamVjdDogW1BBVENIXSBGaXggaGFzaCB0YWJs ZSBwcmludGluZwoKUHJldmlvdXNseSwgdGhlIG91dHB1dCB3b3VsZCBzb21ldGltZXMgY29udGFp biBleHRyYSBzcGFjZXMgb3IgZmV3ZXIKZWxlbWVudHMgdGhhbiB3ZXJlIHJlcXVlc3RlZC4KKiBz cmMvcHJpbnQuYyAocHJpbnRfdmVjdG9ybGlrZSk6IEtlZXAgdHJhY2sgb2YgdGhlIGFjdHVhbCBu dW1iZXIgb2YKZWxlbWVudHMgcHJpbnRlZCByYXRoZXIgdGhhbiBhdHRlbXB0aW5nIHRvIHVzZSBo YXNoIGJ1Y2tldCBpbmRpY2VzLgotLS0KIHNyYy9wcmludC5jIHwgMTcgKysrKysrKysrKysrLS0t LS0KIDEgZmlsZSBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL3NyYy9wcmludC5jIGIvc3JjL3ByaW50LmMKaW5kZXggNDI1YjBkYzRlZS4uMTRi NWYxOWQ2ZSAxMDA2NDQKLS0tIGEvc3JjL3ByaW50LmMKKysrIGIvc3JjL3ByaW50LmMKQEAgLTE1 NzgsMjcgKzE1NzgsMzQgQEAgcHJpbnRfdmVjdG9ybGlrZSAoTGlzcF9PYmplY3Qgb2JqLCBMaXNw X09iamVjdCBwcmludGNoYXJmdW4sIGJvb2wgZXNjYXBlZmxhZywKIAogCS8qIFByaW50IHRoZSBk YXRhIGhlcmUgYXMgYSBwbGlzdC4gKi8KIAlwdHJkaWZmX3QgcmVhbF9zaXplID0gSEFTSF9UQUJM RV9TSVpFIChoKTsKLQlwdHJkaWZmX3Qgc2l6ZSA9IHJlYWxfc2l6ZTsKKwlwdHJkaWZmX3Qgc2l6 ZSA9IGgtPmNvdW50OwogCiAJLyogRG9uJ3QgcHJpbnQgbW9yZSBlbGVtZW50cyB0aGFuIHRoZSBz cGVjaWZpZWQgbWF4aW11bS4gICovCiAJaWYgKEZJWE5BVFAgKFZwcmludF9sZW5ndGgpICYmIFhG SVhOQVQgKFZwcmludF9sZW5ndGgpIDwgc2l6ZSkKIAkgIHNpemUgPSBYRklYTkFUIChWcHJpbnRf bGVuZ3RoKTsKIAogCXByaW50Y2hhciAoJygnLCBwcmludGNoYXJmdW4pOwotCWZvciAocHRyZGlm Zl90IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKQorCXB0cmRpZmZfdCBqID0gMDsKKwlmb3IgKHB0cmRp ZmZfdCBpID0gMDsgaSA8IHJlYWxfc2l6ZTsgaSsrKQogICAgICAgICAgIHsKICAgICAgICAgICAg IExpc3BfT2JqZWN0IGtleSA9IEhBU0hfS0VZIChoLCBpKTsKIAkgICAgaWYgKCFFUSAoa2V5LCBR dW5ib3VuZCkpCiAJICAgICAgewotCSAgICAgICAgaWYgKGkpIHByaW50Y2hhciAoJyAnLCBwcmlu dGNoYXJmdW4pOworCSAgICAgICAgaWYgKGorKykgcHJpbnRjaGFyICgnICcsIHByaW50Y2hhcmZ1 bik7CiAJICAgICAgICBwcmludF9vYmplY3QgKGtleSwgcHJpbnRjaGFyZnVuLCBlc2NhcGVmbGFn KTsKIAkgICAgICAgIHByaW50Y2hhciAoJyAnLCBwcmludGNoYXJmdW4pOwogCSAgICAgICAgcHJp bnRfb2JqZWN0IChIQVNIX1ZBTFVFIChoLCBpKSwgcHJpbnRjaGFyZnVuLCBlc2NhcGVmbGFnKTsK KwkJaWYgKGogPT0gc2l6ZSkKKwkJICBicmVhazsKIAkgICAgICB9CiAgICAgICAgICAgfQogCi0J aWYgKHNpemUgPCByZWFsX3NpemUpCi0JICBwcmludF9jX3N0cmluZyAoIiAuLi4iLCBwcmludGNo YXJmdW4pOworCWlmIChqIDwgaC0+Y291bnQpCisJICB7CisJICAgIGlmIChqKQorCSAgICAgIHBy aW50Y2hhciAoJyAnLCBwcmludGNoYXJmdW4pOworCSAgICBwcmludF9jX3N0cmluZyAoIi4uLiIs IHByaW50Y2hhcmZ1bik7CisJICB9CiAKIAlwcmludF9jX3N0cmluZyAoIikpIiwgcHJpbnRjaGFy ZnVuKTsKICAgICAgIH0KLS0gCjIuMjQuMAoK --000000000000ed05be059b3b3e8a--