Lists Home |
Date Index |
> > Well, SAXExpat is a wrapper for Expat, which is written in C.
> > Therefore it needs to use PInvoke calls, which are a more esoteric feature
> > of the .NET platform.
> > On Mono 1.0.1 I was able to parse simple files, but not even the
> > included conformance test demo ran properly. On Mono 1.0.2 it got worse.
> > All I could determine with the --trace option was that at the point
> > when the ExpatInterop assembly (where the PInvoke code is contained)
> > was loaded it throws a null-reference exception.
> This was caused by a regression in 1.0.2 which will be fixed in the upcoming
> 1.0.3 version. It is also fixed in the 1.1.1 development version.
Good to hear that. I'll check the new release as soon as it is available.
> Also, some methods in Expat.cs, like XMLErrorString, are defined to
> return a 'string' in
> managed code, but the unmanaged method returns a pointer to static memory. This
> will cause problems since the runtime will attempt to free the memory
> returned by the
> unmanaged function. The solution is to return 'IntPtr' and explicitly
> marshal the pointer
> to a string using the functions in the Marshal class.
I thought that is taken care of by default marshalling, where
a copy is made of the string, so the above should not happen.
Does Mono not have default marshalling?
XMLErrorString has not given me trouble yet, and it is used
every time I parser a faulty document, especially when I run
SAXExpat against the XML-Test-Suite.
> > I also could not build the ExpatInterop assembly on Mono, as it needs
> > post-processing with ildasm and ilasm to configure the call-back
> > delegates for the cdecl calling convention. The equivalent tools
> > on Mono (monodis and ilasm) are not mature enough yet.
> Could you file bug reports about this in Mono bugzilla:
OK, will do as soon as I have time.
I appreciate that you took the time to check out SAX & SAXExpat.