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.

/* Steinar */
-- 
Homepage: http://www.sesse.net/


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

Reply via email to