On Mon, Dec 19, 2016 at 07:06:17AM +0000, Luke Kenneth Casson Leighton wrote: > aiyaaa! mustn't do this! it's the "pattern" for a singleton: > > LocalStatusSQLite.py (and probably LocalStatus.py as well): > def savemessage(self, uid, content, flags, rtime, mtime=0, labels=set()): > > > example: > > >>> def singleton(val, x = set()): > ... x.add(val) > ... return x > ... > >>> singleton(5) > set([5]) > >>> singleton(7) > set([5, 7]) > > baad, veryverybaad :) so, any time that labels are used, if you > happen *not* to have that last argument in calling savemessage but > there are instances where it is, things go horribly badly wrong > because the labels= argument ends up STORING prior labels in that > set()... > > > must do this instead: > > >>> def notasingleton(val, x=None): > ... if x is None: > ... x = set() > ... x.add(val) > ... return x > ... > >>> notasingleton(5) > set([5]) > >>> notasingleton(7) > set([7]) > >>> y = set() > >>> notasingleton(7, y) > set([7]) > >>> notasingleton(5, y) > set([5, 7]) > > will submit a patch later, am in the middle of the first lmdb revision.
Looks correct analisys to me. I didn't check how this issue impacts the code, though. -- Nicolas Sebrecht _______________________________________________ OfflineIMAP-project mailing list: [email protected] http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/offlineimap-project OfflineIMAP homepages: - https://github.com/OfflineIMAP - http://offlineimap.org
