|
Boost : |
From: Richard Guenther (rguenther_at_[hidden])
Date: 2006-05-15 07:34:06
On Fri, 12 May 2006, Hartmut Kaiser wrote:
> Richard Guenther wrote:
>
> > > Not yet, but I know that this problem was on linux/gcc systems only
> > > and my main testing platform is Windows. I'll try to find a
> > linux box
> > > with gcc 4.1 istalled today.
> > >
> > > OTOH we had this problems on other gcc platforms earlier as
> > well and
> > > these went away after the fix I sent you yesterday. So I'm
> > currently a
> > > bit out of ideas.
> > >
> > > In the mean time, could you please set the
> > >
> > > #define BOOST_WAVE_BSIZE 196608
> > >
> > > in the same file you fixed yesterday to something bigger as
> > your file size?
> > > Does the error still occur?
> >
> > Raising that to 262144 makes it work. That gives me another
> > hint to where to look.
>
> Doh! Then there is something wrong with the code loading the next chunk of
> data for large files. This should be reproducible for very small files with
>
> #define BOOST_WAVE_BSIZE 16
>
> now. Is there a '\\n' backslash/newline in your file somewhere around the
> 'magic' buffer size we had?
>
> I'll have a look at this later this weekend.
> Regards Hartmut
This patch fixes it for me (again against the 1.33.1 sources). The
problem is that after doing the last buffer read with fill, s->lim is
zeroed out by the subsequent RET (identifier) as limit was not updated
after the call to fill.
Richard.
-- Richard Guenther <rguenther_at_[hidden]> Novell / SUSE Labs --- cpp_re.cpp.orig 2006-05-15 13:29:00.000000000 +0200 +++ cpp_re.cpp 2006-05-15 13:31:59.000000000 +0200 @@ -51,7 +50,7 @@ #define YYCURSOR cursor #define YYLIMIT limit #define YYMARKER marker -#define YYFILL(n) {cursor = uchar_wrapper(fill(s, cursor), cursor.column);} +#define YYFILL(n) {cursor = uchar_wrapper(fill(s, cursor), cursor.column); limit = uchar_wrapper (s->lim); } //#define RET(i) {s->cur = cursor; return (i);} #define RET(i) \ @@ -187,7 +186,7 @@
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk