From f383b26ec6c478fa6edc4c8ccf618eb9cae4a0bc Mon Sep 17 00:00:00 2001 From: John Levon Date: Wed, 31 Jul 2002 04:40:31 +0000 Subject: [PATCH] fix bug so inadvertent errno does not break connection git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@4814 a592a061-630c-0410-9148-cb99ea01b6c8 --- src/ChangeLog | 5 +++++ src/lyxserver.C | 13 +++++++------ 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 1455f1133a..b3a12c5f00 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,8 @@ +2002-07-31 John Levon + + * lyxserver.C: don't let incidental errors get + in the way (errno) + 2002-07-30 John Levon * lyxfunc.C: disable character dialog in ERT inset (partial fix) diff --git a/src/lyxserver.C b/src/lyxserver.C index 9f64d8f9be..35d9829e6b 100644 --- a/src/lyxserver.C +++ b/src/lyxserver.C @@ -271,7 +271,9 @@ void LyXComm::read_ready() errno = 0; int status; // the single = is intended here. - while ((status = read(infd, charbuf, CMDBUFLEN-1))) { + while ((status = read(infd, charbuf, CMDBUFLEN - 1))) { + int rerrno = errno; + if (status > 0) { charbuf[status]= '\0'; // turn it into a c string lsbuf += rtrim(charbuf, "\r"); @@ -289,14 +291,13 @@ void LyXComm::read_ready() //\n or not \n? } } - if (errno == EAGAIN) { + if (rerrno == EAGAIN) { errno = 0; return; } - if (errno != 0) { - lyxerr << "LyXComm: " << strerror(errno) << endl; - if (!lsbuf.empty()) - { + if (rerrno != 0) { + lyxerr << "LyXComm: " << strerror(rerrno) << endl; + if (!lsbuf.empty()) { lyxerr << "LyxComm: truncated command: " << lsbuf << endl; lsbuf.erase(); -- 2.39.2