render_attach(render, p);
} else if (d) {
point_free(pt);
- } else {
- d = pt->doc;
- point_free(pt);
- doc_destroy(d);
- }
+ } else
+ doc_destroy(pt->doc);
return p;
}
/* GROSS HACK */
return NULL;
p = pane_attach(parent, "view", pt, NULL);
if (!p) {
- struct doc *d = pt->doc;
- point_free(pt);
- doc_destroy(d);
+ doc_destroy(pt->doc);
return p;
}
ptp = pane_point(p);
free(d->name);
while (d->marks.first) {
struct mark *m = hlist_first_entry(&d->marks, struct mark, all);
- mark_free(m);
+ if (m->viewnum == MARK_POINT)
+ point_free(container_of(m, struct point, m));
+ else if (m->viewnum == MARK_UNGROUPED)
+ mark_free(m);
+ else
+ /* vmarks should have gone already */
+ ASSERT(0);
}
d->ops->destroy(d);
return 1;