Re: [xml] returning existing handler in xmlNewCharEncodingHandler
- From: Igor Zlatkovic <igor zlatkovic com>
- To: veillard redhat com
- Cc: oliverst online de, xml gnome org
- Subject: Re: [xml] returning existing handler in xmlNewCharEncodingHandler
- Date: Tue, 10 Feb 2004 13:12:02 +0100
Daniel Veillard wrote:
On Tue, Feb 10, 2004 at 11:50:02AM +0100, oliverst online de wrote:
patch against encoding.c version 1.77 as discussed with Igor on the list
1233a1234,1241
* Check for existing handler
*/
handler = xmlFindCharEncodingHandler(name);
if (handler != NULL)
return(handler);
/*
So long
Hum, I might disagree with Igor on this, but it seems to me that
it might be better to call xmlFindCharEncodingHandler() before
calling xmlNewCharEncodingHandler(), rather than changing the semantic
of the existing call. In any case in a multithreaded program it seems
to me that you need to ensure some critical section when changing the
default handlers for an encoding. Usually this is best done at program
startup, but I may have missed something, sorry I couldn't participate
to last week discussion, but after rereading the archive I'm not sure
changing the behaviour is the best thing to do.
I agreed to the patch for the following reason.
The patch will change the behaviour of xmlNewCharEncodingHandler(), but
not that of xmlFindCharEncodingHandler(). The idea was to prevent the
registration of more than one handler for the same encoding name. That
because only the handler which was registered first can ever be found by
xmlFindCharEncodingHandler(). That's the whole reason, it has nothing to
do with multithreading and related problems.
This of course cannot hold if there is code which relies on what
xmlNewCharEncodingHandler() returns and does not use
xmlFindCharEncodingHandler(). But the API suggests not to be used that
way for the reasons above.
At the very end, I don't care particularily about that patch, it won't
change anything for me. If it really breaks something somewhere, then
better not to apply it.
Ciao,
Igor
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]