Jürgen Spitzmüller wrote:

> I'm not good at regexes, but I tried to fix the assert by fixing the regex
> that scans filenames in the logfile.
> 
> By now, everything inside brackets has been passed as file name (which is
> a lot). As soon as a LaTeX command with a backslash was passed, the
> assertion triggered.
> 
> I have added the following conditions that all seem valid to me:
> 
> - backslash must not occur (are there some \string uses in filenames?)

I believe that this is wrong on windows. This does also explain why the
crash does not occur on windows: os::internal_path converts the backslash
to a slash.
Maybe we simply need to disable the assert in FileName::FileName() on
non-windows platforms? After all a backslash is valid in filenames on
linux, and this check is only needed on windows to catch missing
internal_path() calls. I don't know why nobody did have this idea earlier,
after thinking about it it seems only natural. Of course that does not mean
that the other changes are bad, they look good.

> Furthermore, I have noticed that the regex always stops at line breaks, so
> long file names that are broken accross lines are not parsed correctly.
> This happens at least for the following regex:
> static regex reg2("File: ([^ ]+).*");
> Any idea about this?

See this bug: 
http://bugzilla.lyx.org/show_bug.cgi?id=1027
Not easy to solve.


Georg

Reply via email to