void vi_redraw(struct visor *vi)
{
- int i, col, cur_x = 0, cur_y = 0;
+ int i = 0, col, cur_x = 0, cur_y = 0;
char c;
struct vi_buffer *vb;
struct vi_span *sp, *spans_end;
const char *tptr, *tend;
vi_addr spoffs, addr;
+ if(!vi->buflist) goto end;
+
vb = vi->buflist;
if(!(sp = vi_buf_find_span(vb, vb->view_start, &spoffs))) {
sp = vb->spans;
return -1;
}
+ if(vb->fp) {
+ if(vb->file_mapped) {
+ vi_unmap(vb->fp);
+ } else {
+ vi_free(vb->orig);
+ }
+ vi_close(vb->fp);
+ }
+
vi_free(vb->path);
- vi_free(vb->orig);
vi_free(vb->add);
vi_free(vb->spans);
return 0;