ref: 7b17c392d3d9a3616009d11681b6f6dfdbf2ed04
parent: 62741ed595f4ad79b7d7d18fdc4049a6b46baa8d
author: Ori Bernstein <ori@eigenstate.org>
date: Thu Nov 12 18:19:15 EST 2020
Count tree height corectly: account for dummy at root.
--- a/mbox.c
+++ b/mbox.c
@@ -215,9 +215,7 @@
e = mbox.hash[i];
if(e == nil)
return;
- if(e == &dead)
- continue;
- if(e->hash == m->hash && strcmp(e->messageid, m->messageid) == 0){
+ if(e != &dead && e->hash == m->hash && strcmp(e->messageid, m->messageid) == 0){
mbox.hash[i] = &dead;
mbox.ndead++;
}
@@ -660,7 +658,7 @@
{
char *digest, *action;
Mesg *m, *r;
- int ln;
+ int ln, nr;
digest = plumblookup(pm->attr, "digest");
action = plumblookup(pm->attr, "mailtype");
@@ -673,7 +671,9 @@
/* Bump whole thread up in list */
if(r->nsub > 0){
ln = mesglineno(r, nil);
- fprint(mbox.addr, "%d,%d", ln, ln+r->nsub-1);
+ nr = r->nsub + (r->flags & Fdummy) ? 0 : 1;
+ assert(nr >= 0);
+ fprint(mbox.addr, "%d,%d", ln, ln+nr-1);
write(mbox.data, "", 0);
reinsert(r);
}