Re: [xml] Per parser xmlGcMemSetup
- From: Joachim Zobel <jz-2006 heute-morgen de>
- To: Rob Richards <rrichards ctindustries net>
- Cc: xml gnome org
- Subject: Re: [xml] Per parser xmlGcMemSetup
- Date: Sat, 05 May 2007 15:16:54 +0200
Am Samstag, den 05.05.2007, 07:06 -0400 schrieb Rob Richards:
- Try not to use globals. Many functions have been added over the years
that allow settings/options to be passed directly eliminating the need
to use globals.
I would prefer not to use globals. The problem I have to deal with is
that my module calls the SAX2 callbacks (from SAX2.c). These callbacks
assume the memory that is passed to them has been allocated by libxml2,
which is (mostly) not the case. So I might do a lot of memcpying in a
lot of places, never beeing shure that libxml2 will really free this.
What I actually do is setting the libxml2 memory functions. The free
function assumes that a long below the memory it frees is readable and
checks for a mark, that has been put there by the alloc funtions.
- If having to use globals, make sure they do not persists over the
request. Any changes to globals should be reset to previous state as
soon as possible.
I'll have to do it that way.
/* get curent setting and then set to 1 */
int saveempty = xmlSaveNoEmptyTags;
xmlSaveNoEmptyTags = 1;
... /* your code here */
/* reset global to previous value */
xmlSaveNoEmptyTags = saveempty;
It looks as if globals.c provides helpers for the implementation of the
above that are setting and resetting all globals.
Sincerely,
Joachim
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]