On Jan  8, Steinar H. Gunderson ([EMAIL PROTECTED]) wrote:
 > On Sat, Jan 07, 2006 at 11:05:59PM +0100, Steinar H. Gunderson wrote:
 > > I have no idea what the resolution would be, but this should IMHO be fixed 
 > > in
 > > stable; onsgmls is rather broken as long as it can't read properly from a
 > > line-buffered pipe. :-)
 > 
 > I've debugged this a bit, even though I have a hard time grokking opensp's
 > insanely complex input layer (stdio or iostreams was obviously too standard).
 > 
 > The bug seems to manifest itself if and only if a tag spans two read()
 > buffers, like this imaginary strace fragment:
 > 
 >   read(0, "(data here)<span>xxxx", 4096) = 4096
 >   read(0, "xxxx</span>(more data)", 4096) = 512
 > 
 > This explains the different behaviour with regard to stdin redirection, pipes
 > etc. -- opensp simply uses different block sizes in those cases (4kB vs. 8kB
 > vs. 32kB, AFAICS).
 > 
 > You're right in that 1.5.2 fixes the problem, but it might be by accident --
 > if I compile it on sarge it works, but if I drop --disable-dtddecl the bug is
 > back again.
 > 
 > FWIW, I've run it through valgrind, but can't find any errors.

Thanks for digging into this and finding that the bug still exists if
--disable-dtddecl is dropped. I'll also keep looking into it and see what I
can find.

As for the "insanely complex input layer" and "standard" - this code was
probably written a decade ago, so my guess is that what is standard now might
not even have existed in most C++ compilers back then. :-)

-- 
Neil Roeth


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to