kicad-developers team mailing list archive
-
kicad-developers team
-
Mailing list archive
-
Message #08727
Re: Question about PCB_PARSER
On Tue, Aug 07, 2012 at 11:39:58AM +0200, Lorenzo Marcantonio wrote:
> I think that simply passing a LINEREADER built on the stack would work... also we need to be careful with dynamic allocation since there are exception runnings in that section of code (and these need to be catched to delete the dynamic objects).
OK, tried that, did not work :((((
Doing
PARSER parser(new FILE_LINE_READER( file.fp(), aFileName ), this );
parser.Parse();
seems to work (no idea if the filereader is deleted after). Trying instead with
FILE_LINE_READER reader( file.fp(), aFileName );
PARSER parser( &reader, this );
parser.Parse();
triggers a libc fault on stack unwind (probably due to a double free).
So a) the parser actually take possession of the reader and deletes it
or b) there's something that is not exception safe around...
This needs further investigation (maybe it's only the comment that's wrong!)
--
Lorenzo Marcantonio
Logos Srl
References