Handle more cases where a screen has not been fully initialized (inserted
into the scrq) by calling screen_fini() instead of screen_end() where appropriate. Pointed out by chuq.
This commit is contained in:
parent
398232367e
commit
a1f28fb37d
|
@ -1,4 +1,4 @@
|
||||||
/* $NetBSD: screen.c,v 1.5 2013/12/01 02:34:54 christos Exp $ */
|
/* $NetBSD: screen.c,v 1.6 2013/12/01 21:48:33 christos Exp $ */
|
||||||
/*-
|
/*-
|
||||||
* Copyright (c) 1993, 1994
|
* Copyright (c) 1993, 1994
|
||||||
* The Regents of the University of California. All rights reserved.
|
* The Regents of the University of California. All rights reserved.
|
||||||
|
@ -121,7 +121,7 @@ mem: msgq(orig, M_SYSERR, NULL);
|
||||||
*spp = sp;
|
*spp = sp;
|
||||||
return (0);
|
return (0);
|
||||||
|
|
||||||
err: screen_end1(sp, 0);
|
err: screen_fini(sp);
|
||||||
return (1);
|
return (1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -196,10 +196,21 @@ screen_end1(SCR *sp, int init)
|
||||||
return (rval);
|
return (rval);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* screen_fini --
|
||||||
|
* Release a screen, that has not been chained to the screen queues.
|
||||||
|
*
|
||||||
|
* PUBLIC: int screen_fini __P((SCR *));
|
||||||
|
*/
|
||||||
|
int
|
||||||
|
screen_fini(SCR *sp)
|
||||||
|
{
|
||||||
|
return screen_end1(sp, 0);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* screen_end --
|
* screen_end --
|
||||||
* Release a screen, no matter what had (and had not) been
|
* Release a screen, that has been chained to the screen queues.
|
||||||
* initialized.
|
|
||||||
*
|
*
|
||||||
* PUBLIC: int screen_end __P((SCR *));
|
* PUBLIC: int screen_end __P((SCR *));
|
||||||
*/
|
*/
|
||||||
|
@ -208,7 +219,6 @@ screen_end(SCR *sp)
|
||||||
{
|
{
|
||||||
return screen_end1(sp, 1);
|
return screen_end1(sp, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* screen_next --
|
* screen_next --
|
||||||
* Return the next screen in the queue.
|
* Return the next screen in the queue.
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $NetBSD: ex_args.c,v 1.2 2013/11/22 15:52:05 christos Exp $ */
|
/* $NetBSD: ex_args.c,v 1.3 2013/12/01 21:48:33 christos Exp $ */
|
||||||
/*-
|
/*-
|
||||||
* Copyright (c) 1991, 1993, 1994
|
* Copyright (c) 1991, 1993, 1994
|
||||||
* The Regents of the University of California. All rights reserved.
|
* The Regents of the University of California. All rights reserved.
|
||||||
|
@ -141,7 +141,7 @@ ex_N_next(SCR *sp, EXCMD *cmdp)
|
||||||
if (screen_init(sp->gp, sp, &new))
|
if (screen_init(sp->gp, sp, &new))
|
||||||
return (1);
|
return (1);
|
||||||
if (vs_split(sp, new, 0)) {
|
if (vs_split(sp, new, 0)) {
|
||||||
(void)screen_end(new);
|
(void)screen_fini(new);
|
||||||
return (1);
|
return (1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $NetBSD: ex_edit.c,v 1.5 2013/12/01 02:34:54 christos Exp $ */
|
/* $NetBSD: ex_edit.c,v 1.6 2013/12/01 21:48:33 christos Exp $ */
|
||||||
/*-
|
/*-
|
||||||
* Copyright (c) 1992, 1993, 1994
|
* Copyright (c) 1992, 1993, 1994
|
||||||
* The Regents of the University of California. All rights reserved.
|
* The Regents of the University of California. All rights reserved.
|
||||||
|
@ -120,7 +120,7 @@ ex_N_edit(SCR *sp, EXCMD *cmdp, FREF *frp, int attach)
|
||||||
return (1);
|
return (1);
|
||||||
if ((cmdp->cmd == &cmds[C_VSPLIT] && vs_vsplit(sp, new)) ||
|
if ((cmdp->cmd == &cmds[C_VSPLIT] && vs_vsplit(sp, new)) ||
|
||||||
(cmdp->cmd != &cmds[C_VSPLIT] && vs_split(sp, new, 0))) {
|
(cmdp->cmd != &cmds[C_VSPLIT] && vs_split(sp, new, 0))) {
|
||||||
(void)screen_end(new);
|
(void)screen_fini(new);
|
||||||
return (1);
|
return (1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $NetBSD: ex_tag.c,v 1.9 2013/12/01 02:34:54 christos Exp $ */
|
/* $NetBSD: ex_tag.c,v 1.10 2013/12/01 21:48:33 christos Exp $ */
|
||||||
/*-
|
/*-
|
||||||
* Copyright (c) 1992, 1993, 1994
|
* Copyright (c) 1992, 1993, 1994
|
||||||
* The Regents of the University of California. All rights reserved.
|
* The Regents of the University of California. All rights reserved.
|
||||||
|
@ -302,7 +302,7 @@ ex_tag_Nswitch(SCR *sp, TAG *tp, int force)
|
||||||
return (1);
|
return (1);
|
||||||
if (vs_split(sp, new, 0)) {
|
if (vs_split(sp, new, 0)) {
|
||||||
(void)file_end(new, new->ep, 1);
|
(void)file_end(new, new->ep, 1);
|
||||||
(void)screen_end(new);
|
(void)screen_fini(new);
|
||||||
return (1);
|
return (1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $NetBSD: v_ex.c,v 1.5 2013/12/01 02:34:54 christos Exp $ */
|
/* $NetBSD: v_ex.c,v 1.6 2013/12/01 21:48:33 christos Exp $ */
|
||||||
/*-
|
/*-
|
||||||
* Copyright (c) 1992, 1993, 1994
|
* Copyright (c) 1992, 1993, 1994
|
||||||
* The Regents of the University of California. All rights reserved.
|
* The Regents of the University of California. All rights reserved.
|
||||||
|
@ -516,7 +516,7 @@ v_ecl(SCR *sp)
|
||||||
if (screen_init(gp, sp, &new))
|
if (screen_init(gp, sp, &new))
|
||||||
return (1);
|
return (1);
|
||||||
if (vs_split(sp, new, 1)) {
|
if (vs_split(sp, new, 1)) {
|
||||||
(void)screen_end(new);
|
(void)screen_fini(new);
|
||||||
return (1);
|
return (1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -651,7 +651,7 @@ v_ecl_init(SCR *sp)
|
||||||
return (1);
|
return (1);
|
||||||
conv_enc(wp->ccl_sp, O_FILEENCODING, "WCHAR_T");
|
conv_enc(wp->ccl_sp, O_FILEENCODING, "WCHAR_T");
|
||||||
if (file_init(wp->ccl_sp, frp, NULL, 0)) {
|
if (file_init(wp->ccl_sp, frp, NULL, 0)) {
|
||||||
(void)screen_end(wp->ccl_sp);
|
(void)screen_fini(wp->ccl_sp);
|
||||||
wp->ccl_sp = 0;
|
wp->ccl_sp = 0;
|
||||||
return (1);
|
return (1);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue