From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Eric Abrahamsen Newsgroups: gmane.emacs.bugs Subject: bug#29220: 26.0.90; eieio-persistent-read fail to restore saved object. Date: Tue, 05 Dec 2017 09:47:26 -0800 Message-ID: <87609lcbip.fsf@ericabrahamsen.net> References: <87y3nga0lv.fsf@killashandra.ballybran.fr> <8760aim2a5.fsf@ericabrahamsen.net> <87375j2tzd.fsf@users.sourceforge.net> <87inecwl1v.fsf@killashandra.ballybran.fr> <87y3n81eq7.fsf@users.sourceforge.net> <87h8ts1cfp.fsf@users.sourceforge.net> <87zi7kyzcf.fsf@ericabrahamsen.net> <87efov1zzn.fsf@users.sourceforge.net> <87h8trzc6e.fsf@ericabrahamsen.net> <87bmjz0xez.fsf@users.sourceforge.net> <87zi7cpooo.fsf@killashandra.ballybran.fr> <87h8tkzgef.fsf@users.sourceforge.net> <87zi76f5hj.fsf@killashandra.ballybran.fr> <87shcycavk.fsf@ericabrahamsen.net> <87lgimpdhp.fsf@ericabrahamsen.net> <87h8t8is1u.fsf@ericabrahamsen.net> <87zi6zmzh7.fsf@killashandra.ballybran.fr> <87h8t69d7b.fsf@ericabrahamsen.net> NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: text/plain X-Trace: blaine.gmane.org 1512496215 22316 195.159.176.226 (5 Dec 2017 17:50:15 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Tue, 5 Dec 2017 17:50:15 +0000 (UTC) User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (gnu/linux) Cc: 29220@debbugs.gnu.org, Pierre =?UTF-8?Q?T=C3=A9choueyres?= , Noam Postavsky To: Stefan Monnier Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Tue Dec 05 18:50:11 2017 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eMHM8-0005QL-77 for geb-bug-gnu-emacs@m.gmane.org; Tue, 05 Dec 2017 18:50:08 +0100 Original-Received: from localhost ([::1]:51414 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eMHMF-0000rg-9V for geb-bug-gnu-emacs@m.gmane.org; Tue, 05 Dec 2017 12:50:15 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:56473) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eMHM7-0000rN-WC for bug-gnu-emacs@gnu.org; Tue, 05 Dec 2017 12:50:08 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eMHM2-0007YQ-Np for bug-gnu-emacs@gnu.org; Tue, 05 Dec 2017 12:50:07 -0500 Original-Received: from debbugs.gnu.org ([208.118.235.43]:39396) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1eMHM2-0007YJ-HB for bug-gnu-emacs@gnu.org; Tue, 05 Dec 2017 12:50:02 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1eMHM2-0008E4-8A for bug-gnu-emacs@gnu.org; Tue, 05 Dec 2017 12:50:02 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Eric Abrahamsen Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 05 Dec 2017 17:50:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 29220 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: Original-Received: via spool by 29220-submit@debbugs.gnu.org id=B29220.151249616231020 (code B ref 29220); Tue, 05 Dec 2017 17:50:02 +0000 Original-Received: (at 29220) by debbugs.gnu.org; 5 Dec 2017 17:49:22 +0000 Original-Received: from localhost ([127.0.0.1]:48077 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eMHLO-00084D-0J for submit@debbugs.gnu.org; Tue, 05 Dec 2017 12:49:22 -0500 Original-Received: from mail.ericabrahamsen.net ([50.56.99.223]:57417) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eMHLK-00083B-QD for 29220@debbugs.gnu.org; Tue, 05 Dec 2017 12:49:19 -0500 Original-Received: from localhost (71-212-75-109.tukw.qwest.net [71.212.75.109]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) (Authenticated sender: eric@ericabrahamsen.net) by mail.ericabrahamsen.net (Postfix) with ESMTPSA id 38F1AC0541; Tue, 5 Dec 2017 17:49:17 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mail.ericabrahamsen.net; s=mail; t=1512496157; bh=51M8UJ4GBht/WhEMIacULUzNCb06hwb1Y9bDqVappWg=; h=From:To:Cc:Subject:References:Date:In-Reply-To:From; b=qTeVPMG4fCaytsZIUt6h3Mz2SRIRlVrJKmGVXQF/DJ3ZDS/myTKnB6vmRNRN6oC2c u0gJRoccSrEOsjrv8oqatJNrbC+CTLnRNcWS3xtc6RXxmFdixJv2Ezm/sOJCGQVGHu f7cM51Rnfw3snI7cGmSS5RLZva3K2OzzoAHMEHNc= In-Reply-To: (Stefan Monnier's message of "Mon, 04 Dec 2017 21:08:40 -0500") 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: 208.118.235.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:140728 Archived-At: On 12/04/17 21:08 PM, Stefan Monnier wrote: >> --- a/lisp/emacs-lisp/eieio-base.el >> +++ b/lisp/emacs-lisp/eieio-base.el >> @@ -354,15 +354,34 @@ eieio-persistent-validate/fix-slot-value >> proposed-value)) >> (t >> proposed-value)))) >> + ((stringp proposed-value) >> + ;; Remove string properties. >> + (substring-no-properties proposed-value)) >> + >> + ;; For hash-tables and vectors, the top-level `read' will not >> + ;; "look inside" member values, so we need to do that >> + ;; explicitly. >> + ((hash-table-p proposed-value) >> + (maphash >> + (lambda (key value) >> + (when (class-p (car-safe value)) >> + (setf (gethash key proposed-value) >> + (eieio-persistent-convert-list-to-object >> + value)))) >> + proposed-value) >> + proposed-value) >> + >> + ((vectorp proposed-value) >> + (dotimes (i (length proposed-value)) >> + (when (class-p (car-safe (aref proposed-value i))) >> + (aset proposed-value i >> + (eieio-persistent-convert-list-to-object >> + (aref proposed-value i))))) >> + proposed-value) > >> - ((stringp proposed-value) >> - ;; Else, check for strings, remove properties. >> - (substring-no-properties proposed-value)) >> - >> - (t >> - ;; Else, just return whatever the constant was. >> - proposed-value)) >> - ) >> + (t >> + ;; Else, just return whatever the constant was. >> + proposed-value))) > > Not sure why the `stringp` part was reindented, and an empty line was > lost (which de-synchronized the diff), but other than that, it looks fine. Dunno about the reindentation, either, I guess I can discard those changes. >> + ((hash-table-p thing) >> + (maphash >> + (lambda (key val) >> + (setf (gethash key thing) >> + (read >> + (with-output-to-string >> + (temp-eieio-override-prin1 val))))) >> + thing) >> + (prin1 thing)) >> + ((vectorp thing) >> + (dotimes (i (length thing)) >> + (aset thing i >> + (read >> + (with-output-to-string >> + (temp-eieio-override-prin1 >> + (aref thing i)))))) >> + (prin1 thing)) > > This looks wrong, OTOH: > - temp-eieio-override-prin1 does not exist in my copy of Emacs > `master`. That was a temporary name to prevent these changes from wrecking my Gnus and EBDB. I guess I should be working in a separate Emacs. > - you modify the object you received, so while the print part will > presumably work OK, the object left after that is unusable. I should have realized that... > Maybe a better option is to print something of the form > > (vector ...) > > i.e. not something that looks like a vector. Or otherwise, print the > "standard" syntax of a vector/hash-table, but do it by hand rather than > rely on prin1 to do it for us. Would it be too "heavy" to just copy the object and modify the copy? It seems like writing a list-like form will result in just as much consing...? Eric