len += strlen(set->attrs + offset + len) + 1;
memmove(set->attrs + offset,
set->attrs + offset + len,
- set->len - offset);
+ set->len - (offset + len));
set->len -= len;
if (set->len == 0) {
*setp = set->next;
len += strlen(set->attrs + offset + len) + 1;
memmove(set->attrs + offset,
set->attrs + offset + len,
- set->len - offset);
+ set->len - (offset + len));
set->len -= len;
}
if (!val)
tlist_add(&g[i].head, GRP_HEAD, &d->views[i].head);
tlist_del(&d->views[i].head);
g[i].notify = d->views[i].notify;
+ g[i].space = d->views[i].space;
}
for (; i < d->nviews; i++) {
INIT_TLIST_HEAD(&g[i].head, GRP_HEAD);
void point_free(struct point *p)
{
int i;
+ *p->owner = NULL;
for (i = 0; i < p->size; i++)
tlist_del_init(&p->lists[i]);
mark_delete(&p->m);
pane_damaged(p->parent, DAMAGED_SIZE);
attr_free(&p->attrs);
/* FIXME who destroys 'point'*/
+ ASSERT(p->point == NULL);
free(p);
}
mark_free(boundary);
return 1;
}
+ if (boundary)
+ mark_free(boundary);
if (ch == WEOF && rpt)
return -1;
if (ch == '\n')
if (strcmp(ci->key, "Close") == 0) {
pt = *ci->pointp;
doc_del_view(pt->doc, &vd->ch_notify);
+ point_free(pt);
free(vd);
return 1;
}
struct point *pt;
struct pane *p, *c;
- pt = editor_choose_doc(ed);
doc_del_view(d, &vd->ch_notify);
c = pane_child(vd->pane);
if (c)
pane_close(c);
+ pt = vd->pane->point;
+ point_free(pt);
+ pt = editor_choose_doc(ed);
p = view_reattach(vd->pane, pt);
render_attach(NULL, p);
}