diff --git a/src/cmd/ksh93/edit/edit.c b/src/cmd/ksh93/edit/edit.c index e87d21bbe6a4..854f16009186 100644 --- a/src/cmd/ksh93/edit/edit.c +++ b/src/cmd/ksh93/edit/edit.c @@ -536,15 +536,17 @@ void ed_setup(Edit_t *ep, int fd, int reedit) buff = (char*)sh_malloc(MAXLINE); ep->e_outbase = ep->e_outptr = buff; ep->e_outlast = ep->e_outptr + MAXLINE - 1; - return; } - qlen = sfset(sfstderr,SFIO_READ,0); - /* make sure SFIO_READ not on */ - ep->e_outbase = ep->e_outptr = (char*)sfreserve(sfstderr,SFIO_UNBOUND,SFIO_LOCKR); - ep->e_outlast = ep->e_outptr + sfvalue(sfstderr) - 1; - if(qlen) - sfset(sfstderr,SFIO_READ,1); - sfwrite(sfstderr,ep->e_outptr,0); + else + { + qlen = sfset(sfstderr,SFIO_READ,0); + /* make sure SFIO_READ not on */ + ep->e_outbase = ep->e_outptr = sfreserve(sfstderr,SFIO_UNBOUND,SFIO_LOCKR); + ep->e_outlast = ep->e_outptr + sfvalue(sfstderr) - 1; + if(qlen) + sfset(sfstderr,SFIO_READ,1); + sfwrite(sfstderr,ep->e_outptr,0); + } ep->e_eol = reedit; if(ep->e_default && (pp = nv_getval(ep->e_default))) { diff --git a/src/lib/libast/man/sfio.3 b/src/lib/libast/man/sfio.3 index 6c8ff68e58c3..e20731b1abea 100644 --- a/src/lib/libast/man/sfio.3 +++ b/src/lib/libast/man/sfio.3 @@ -745,7 +745,7 @@ The call \f3sfreserve(f, 0, SFIO_LOCKR)\fP is similar but also locks the stream. .Tp \f3n > 0\fP: \f3sfreserve()\fP will use attempt to get \fIat most\fP \f3n\fP bytes into -the buffer. Further, if \f3type == 3SFIO_LOCKR\fP (see below), read attempts +the buffer. Further, if \f3type == SFIO_LOCKR\fP (see below), read attempts end on a positive amount. For a successful reservation, the argument \f3type\fP dictates treatment