Commit 5f1e1f8a authored by Daniel Veillard's avatar Daniel Veillard

backport of a thread bugfix from 2_5_X branch Daniel

* threads.c: backport of a thread bugfix from 2_5_X branch
Daniel
parent c6e20e44
Fri Sep 12 01:34:19 CEST 2003 Daniel Veillard <daniel@veillard.com>
* threads.c: backport of a thread bugfix from 2_5_X branch
Thu Sep 11 18:29:18 CEST 2003 Daniel Veillard <daniel@veillard.com>
* parser.c: fixed a bug in one corner case of attribute parsing.
......
......@@ -573,41 +573,53 @@ Class xmlDoc(xmlNode)
# functions from module xpointer
xpointerNewContext()
Class xpathContext()
# accessors
contextDoc()
contextNode()
contextPosition()
contextSize()
function()
functionURI()
setContextDoc()
setContextNode()
# functions from module python
registerXPathFunction()
# functions from module xpath
xpathEval()
xpathEvalExpression()
xpathFreeContext()
Class xmlAttribute(xmlNode)
Class xmlTextReaderLocator()
# functions from module xmlreader
BaseURI()
LineNumber()
Class xmlNs(xmlNode)
# functions from module tree
copyNamespace()
copyNamespaceList()
freeNs()
freeNsList()
newChild()
newDocNode()
newDocNodeEatName()
newDocRawNode()
newNodeEatName()
newNsProp()
newNsPropEatName()
newTextChild()
setNs()
setNsProp()
unsetNsProp()
# functions from module xpathInternals
xpathNewParserContext()
xpathNsLookup()
xpathRegisterAllFunctions()
xpathRegisterNs()
xpathRegisteredFuncsCleanup()
xpathRegisteredNsCleanup()
xpathRegisteredVariablesCleanup()
xpathVariableLookup()
xpathVariableLookupNS()
xpathNodeSetFreeNs()
# functions from module xpointer
xpointerEval()
Class xmlDtd(xmlNode)
Class xmlAttribute(xmlNode)
# functions from module debugXML
debugDumpDTD()
# functions from module tree
copyDtd()
freeDtd()
# functions from module valid
dtdAttrDesc()
dtdElementDesc()
dtdQAttrDesc()
dtdQElementDesc()
Class catalog()
# functions from module catalog
......@@ -621,106 +633,6 @@ Class catalog()
resolvePublic()
resolveSystem()
resolveURI()
Class xmlElement(xmlNode)
Class xmlAttr(xmlNode)
# functions from module debugXML
debugDumpAttr()
debugDumpAttrList()
# functions from module tree
copyProp()
copyPropList()
freeProp()
freePropList()
removeProp()
# functions from module valid
removeID()
removeRef()
Class xmlTextReader(xmlTextReaderCore)
# functions from module xmlreader
AttributeCount()
BaseUri()
Close()
CurrentDoc()
CurrentNode()
Depth()
Expand()
GetAttribute()
GetAttributeNo()
GetAttributeNs()
GetParserProp()
GetRemainder()
HasAttributes()
HasValue()
IsDefault()
IsEmptyElement()
IsValid()
LocalName()
LookupNamespace()
MoveToAttribute()
MoveToAttributeNo()
MoveToAttributeNs()
MoveToElement()
MoveToFirstAttribute()
MoveToNextAttribute()
Name()
NamespaceUri()
Next()
NodeType()
Normalization()
Prefix()
QuoteChar()
Read()
ReadAttributeValue()
ReadInnerXml()
ReadOuterXml()
ReadState()
ReadString()
RelaxNGSetSchema()
RelaxNGValidate()
SetParserProp()
Value()
XmlLang()
Class xmlReg()
# functions from module xmlregexp
regexpExec()
regexpFreeRegexp()
regexpIsDeterminist()
regexpPrint()
Class xmlEntity(xmlNode)
# functions from module parserInternals
handleEntity()
Class relaxNgSchema()
# functions from module relaxng
relaxNGDump()
relaxNGDumpTree()
relaxNGFree()
relaxNGNewValidCtxt()
# functions from module xmlreader
RelaxNGSetSchema()
Class relaxNgValidCtxt()
# functions from module relaxng
relaxNGValidateDoc()
relaxNGValidateFullElement()
relaxNGValidatePopElement()
relaxNGValidatePushCData()
relaxNGValidatePushElement()
Class xpathParserContext()
# accessors
context()
......@@ -866,62 +778,6 @@ Class parserCtxt(parserCtxtCore)
stringLenDecodeEntities()
Class xmlDtd(xmlNode)
# functions from module debugXML
debugDumpDTD()
# functions from module tree
copyDtd()
freeDtd()
# functions from module valid
dtdAttrDesc()
dtdElementDesc()
dtdQAttrDesc()
dtdQElementDesc()
Class xmlNs(xmlNode)
# functions from module tree
copyNamespace()
copyNamespaceList()
freeNs()
freeNsList()
newChild()
newDocNode()
newDocNodeEatName()
newDocRawNode()
newNodeEatName()
newNsProp()
newNsPropEatName()
newTextChild()
setNs()
setNsProp()
unsetNsProp()
# functions from module xpathInternals
xpathNodeSetFreeNs()
Class inputBuffer(ioReadWrapper)
# functions from module xmlIO
freeParserInputBuffer()
grow()
push()
read()
# functions from module xmlreader
newTextReader()
Class relaxNgParserCtxt()
# functions from module relaxng
relaxNGFreeParserCtxt()
relaxNGParse()
Class outputBuffer(ioWriteWrapper)
# functions from module HTMLtree
......@@ -940,11 +796,98 @@ Class outputBuffer(ioWriteWrapper)
flush()
write()
writeString()
Class xmlTextReaderLocator()
Class xmlElement(xmlNode)
Class relaxNgSchema()
# functions from module relaxng
relaxNGDump()
relaxNGDumpTree()
relaxNGFree()
relaxNGNewValidCtxt()
# functions from module xmlreader
BaseURI()
LineNumber()
RelaxNGSetSchema()
Class xmlEntity(xmlNode)
# functions from module parserInternals
handleEntity()
Class xmlTextReader(xmlTextReaderCore)
# functions from module xmlreader
AttributeCount()
BaseUri()
Close()
CurrentDoc()
CurrentNode()
Depth()
Expand()
GetAttribute()
GetAttributeNo()
GetAttributeNs()
GetParserProp()
GetRemainder()
HasAttributes()
HasValue()
IsDefault()
IsEmptyElement()
IsValid()
LocalName()
LookupNamespace()
MoveToAttribute()
MoveToAttributeNo()
MoveToAttributeNs()
MoveToElement()
MoveToFirstAttribute()
MoveToNextAttribute()
Name()
NamespaceUri()
Next()
NodeType()
Normalization()
Prefix()
QuoteChar()
Read()
ReadAttributeValue()
ReadInnerXml()
ReadOuterXml()
ReadState()
ReadString()
RelaxNGSetSchema()
RelaxNGValidate()
SetParserProp()
Value()
XmlLang()
Class xmlAttr(xmlNode)
# functions from module debugXML
debugDumpAttr()
debugDumpAttrList()
# functions from module tree
copyProp()
copyPropList()
freeProp()
freePropList()
removeProp()
# functions from module valid
removeID()
removeRef()
Class xmlReg()
# functions from module xmlregexp
regexpExec()
regexpFreeRegexp()
regexpIsDeterminist()
regexpPrint()
Class URI()
# accessors
authority()
......@@ -971,3 +914,60 @@ Class URI()
parseURIReference()
printURI()
saveUri()
Class relaxNgParserCtxt()
# functions from module relaxng
relaxNGFreeParserCtxt()
relaxNGParse()
Class xpathContext()
# accessors
contextDoc()
contextNode()
contextPosition()
contextSize()
function()
functionURI()
setContextDoc()
setContextNode()
# functions from module python
registerXPathFunction()
# functions from module xpath
xpathEval()
xpathEvalExpression()
xpathFreeContext()
# functions from module xpathInternals
xpathNewParserContext()
xpathNsLookup()
xpathRegisterAllFunctions()
xpathRegisterNs()
xpathRegisteredFuncsCleanup()
xpathRegisteredNsCleanup()
xpathRegisteredVariablesCleanup()
xpathVariableLookup()
xpathVariableLookupNS()
# functions from module xpointer
xpointerEval()
Class inputBuffer(ioReadWrapper)
# functions from module xmlIO
freeParserInputBuffer()
grow()
push()
read()
# functions from module xmlreader
newTextReader()
Class relaxNgValidCtxt()
# functions from module relaxng
relaxNGValidateDoc()
relaxNGValidateFullElement()
relaxNGValidatePopElement()
relaxNGValidatePushCData()
relaxNGValidatePushElement()
......@@ -235,8 +235,10 @@ xmlFreeRMutex(xmlRMutexPtr tok ATTRIBUTE_UNUSED)
* xmlRMutexLock() is used to lock a libxml2 token_r.
*/
void
xmlRMutexLock(xmlRMutexPtr tok ATTRIBUTE_UNUSED)
xmlRMutexLock(xmlRMutexPtr tok)
{
if (tok == NULL)
return;
#ifdef HAVE_PTHREAD_H
pthread_mutex_lock(&tok->lock);
if (tok->held) {
......@@ -269,6 +271,8 @@ xmlRMutexLock(xmlRMutexPtr tok ATTRIBUTE_UNUSED)
void
xmlRMutexUnlock(xmlRMutexPtr tok ATTRIBUTE_UNUSED)
{
if (tok == NULL)
return;
#ifdef HAVE_PTHREAD_H
pthread_mutex_lock(&tok->lock);
tok->held--;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment