Re: [libxml++] Global initialization code
- From: Thomas Jarosch <thomas jarosch intra2net com>
- To: libxmlplusplus-general lists sourceforge net
- Subject: Re: [libxml++] Global initialization code
- Date: Mon, 13 Jun 2005 10:39:26 +0200
Christophe,
On Monday 13 June 2005 10:25, Christophe de VIENNE wrote:
> > Document::Init Document::init_;
> >
> > We use PHP as apache module and have another module linking libxml++.
> > The above piece of code totally breaks PHP's XML parser
> > just by loading the second module.
>
> Can you be more precise ? What is broken exactly ?
> It the php xml parser is base on libxml2 and use it's callback (as we do
> with libxml++), then I don't think a cohexistence is possible.
PHP uses libxml2 without those callbacks. As soon as I create a node using PHP
function calls, I end up in libxml++'s callback :o)
> > Changing the code is not easy as it would break existing applications.
> > One possible solution would be to add a check to every constructor if the
> > library was already initialized. On the destruction of the last libxml++
> > class if would have to be uninitialized.
>
> It's unclear to me if the problem comes from a double-initialisation of
> libxml++ or a conflit between php and libxml++ which are not able to
> 'share' their use of libxml2.
> Moreover such a test ( checking to every constructor if the library was
> already initialized) is basically what's being done by the static Init
> instance. We could maybe add some checks in the Init constructor but I
> don't see a case where it's needed : static should do it for us.
The problem with the "static" class is that it gets executed
during library load time. This is why it breaks PHP.
> > A more clean way would be to have an init()/deinit() function.
> > Perhaps the use of this mode could be a compile time option?
> >
> > Please let me know what you think about this.
>
> I'm unsure about this. I don't think having a different behavior (ie the
> user being obliged to call the init/deinit functions) based on a
> compile-time option is a good idea. Anyway if the problem really comes from
> here you can try and patch libxml++ to see if it's fixing you problems.
I already did and it fixed the problem. Took me hours to debug it
until I realized what's really happening (PHP just started to segfault).
The question is now if there's a more elegant solution
than having a compile-time option?
Cheers,
Thomas
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]