[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [VM] bug with labels in virtual folders
From: |
John Hein |
Subject: |
Re: [VM] bug with labels in virtual folders |
Date: |
Tue, 8 Jan 2013 11:12:38 -0700 (MST) |
Julian Bradfield wrote at 09:00 +0000 on Jan 8, 2013:
> After a year (or maybe two) of elapsed time and probably tens of hours
> staring at the lisp debugger, I have finally tracked down the most
> annoying (for me) outstanding bug in vm. That is, I've fixed it, but I
> don't understand the fix or the bug!
>
> My vm is Uday's private 8.2.X branch of 6 February 2012, but I think
> this bug is still in trunk (haven't tried it, though).
I can't reproduce this with emacs 24.2.1 and vm trunk rev 1476.
Revisiting after 'l b', quit has both labels a & b.
> Here's the bug description:
>
> Create a folder (say /tmp/I) containing a single message.
> Visit the folder, and add the label "a" to the message.
> Quit the folder.
>
> Now do
> (setq vm-virtual-folder-alist
> '(
> ("V" (("/tmp/I") (any)))))
>
> Visit the virtual folder V.
> Add the label "b" to the message.
> The summary mode line will show the message as having labels "a" and
> "b", as expected; but in fact the message has only the new label "b".
> To see this, save the folder, quit, and re-visit the real folder (or
> the virtual folder).
>
> The thing that happened this morning was that I spent so long staring
> at one line in the debugger that the flush timer fired while I was
> doing so, which magically made the bug not happen.
>
> The following patch appears to fix the bug:
>
> *** vm-undo.el 2012/11/26 15:09:10 1.1
> --- vm-undo.el 2013/01/08 08:27:02 1.2
> ***************
> *** 597,603 ****
> (vm-set-labels-of m labels)
> (vm-set-label-string-of m nil)
> (vm-mark-for-summary-update m)
> ! (if (eq vm-flush-interval t)
> (vm-stuff-virtual-message-data m)
> (vm-set-stuff-flag-of m t))))))
>
> --- 597,604 ----
> (vm-set-labels-of m labels)
> (vm-set-label-string-of m nil)
> (vm-mark-for-summary-update m)
> ! ;; deferring stuffing breaks labels in virtual folders
> ! (if t ;(eq vm-flush-interval t)
> (vm-stuff-virtual-message-data m)
> (vm-set-stuff-flag-of m t))))))
>
>
> This does raise the question in my mind as to whether the other
> similarly deferred uses of vm-stuff-virtual-message-data are
> dangerous.
>