Lists Home |
Date Index |
- To: email@example.com
- Subject: Re: [xml-dev] SAX for .NET 1.0 released
- From: Zoltan Varga <firstname.lastname@example.org>
- Date: Tue, 26 Oct 2004 12:13:16 +0200
- Domainkey-signature: a=rsa-sha1; q=dns; c=nofws; s=beta; d=gmail.com; h=received:message-id:date:from:reply-to:to:subject:mime-version:content-type:content-transfer-encoding; b=rXMFSSiBZ48QjH04l4s2348ERnHGkuiOWvkv/rwrP2dAcrARFheF5tQiI/1l3UlKwqu3udJT/u06kFgXeSZT0BOYlDyNDbaYivDrYZtA/N6u9RG4x5PnUk4g4VSwzmjs9DkHYfNhXMJFkeVxFQR9SfC2V/HfxbN87bVDkmQKU54=
- Reply-to: Zoltan Varga <email@example.com>
> 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.
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 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: