summaryrefslogtreecommitdiff
path: root/threads.c
Commit message (Collapse)AuthorAgeFilesLines
* Add declaration for DllMainJ. Peter Mugaas2017-10-211-0/+10
| | | | Fixes a compiler warning.
* Fix preprocessor conditional in threads.hJ. Peter Mugaas2017-10-211-3/+3
| | | | | Make sure that the preprocessor conditions and types for xmlDllMain match exactly in threads.h and threads.c.
* Fix a couple of warnings in dict.c and threads.cNick Wellnhofer2017-10-091-4/+7
| | | | Only visible on Windows.
* Fix the Windows header messNick Wellnhofer2017-10-091-0/+1
| | | | | | | | | | | | Don't include windows.h and wsockcompat.h from config.h but only when needed. Don't define _WINSOCKAPI_ manually. This was apparently done to stop windows.h from including winsock.h which is a problem if winsock2.h wasn't included first. But on MinGW, this causes compiler warnings. Define WIN32_LEAN_AND_MEAN instead which has the same effect. Always use the compiler-defined _WIN32 macro instead of WIN32.
* Change preprocessor OS tests to __linux__Nick Wellnhofer2017-09-141-2/+2
| | | | "linux" without leading underscores is deprecated and less reliable.
* Fix compiler warnings in threads.cNick Wellnhofer2017-06-171-37/+17
| | | | Use '#pragma weak' to declare weak functions.
* Fix the fix to Windows lockingSteve Nairn2015-03-031-1/+1
| | | | | | | | | | | | | | | | For https://bugzilla.gnome.org/show_bug.cgi?id=737851 Unfortunately this change has introduced a problem which results in occasional hangs on Windows when running multi-threaded on a multi-core host. When locking the xmlRMutex the count field is increment inside the critical section but when unlocking the count field is decremented outside the critical section. The increment/decrement is not atomic so this can result in the count field being updated incorrectly. The solution is to change xmlRMutexUnlock to decrement the count field before leaving the critical section rather than after.
* threads: use forward declarations only for glibcMichael Heimpold2014-12-221-2/+2
| | | | | | | | | | | | | | | | | Fixes bug #704908 The declarations of pthread functions, used to generate weak references to them, fail to suppress macros. Thus, if any pthread function has been provided as a macro, compiling threads.c will fail. This breaks on musl libc, which defines pthread_equal as a macro (in addition to providing the function, as required). Prevent the declarations for e.g. musl libc by refining the condition. The idea for this solution was borrowed from the alpine linux guys, see http://git.alpinelinux.org/cgit/aports/tree/main/libxml2/libxml2-pthread.patch Signed-off-by: Michael Heimpold <mhei@heimpold.de>
* Windows Critical sections not released correctlyDaniel Veillard2014-10-131-2/+4
| | | | | | | For https://bugzilla.gnome.org/show_bug.cgi?id=737851 Based on report from mike.vanduzee@caris.com , we were missing calling LeaveCriticalSection() when count was down to 0 hence not freeing adequately the related resource.
* Remove risk of lockup in dictionary initializationDaniel Veillard2013-04-051-0/+3
| | | | | | | | | | | Reported by Petr Sumbera <petr.sumbera@oracle.com> Two threads entering xmlInitializeDict concurently could lead to a lockup due to multiple initializations of the lock used. To avoid this problem move this to a new private function called from xmlOnceInit() and deprecate the old initalizer. Since threaded programs must call xmlInitParser() and this will lead to dereference of private data and the call to xmlOnceInit() guaranteed to be unique this should be safe now.
* Remove potential calls to exit()Daniel Veillard2012-10-111-2/+0
|
* Fix a thread portability problemFriedrich Haubensak2012-09-151-1/+2
| | | | | | | cannot compile libxml2-2.9.0 using studio 12.1 compiler on solaris 10 I.M.O. structure initializer (as PTHREAD_ONCE_INIT) cannot be used in a structure assignment anyway
* Fix reuse of xmlInitParserDaniel Veillard2012-09-041-0/+1
| | | | | | | | | | | | | | While xmlCleanupParser() should not be used unless complete control is insured over the programe making sure libxml2 is not in use anywhere It should still be usable, and allow a sequence of xmlInitParser(); xmlCleanupParser(); calls if needed, the problem is that the thread key wasn't reallocated on subsequent xmlinitParser() calls leading to corruption of pthread keys used by the program. * threads.c: make sure xmlCleanupParser() reset the pthread_once() global variable driving thread key allocation.
* Various "make distcheck" and portability fixupsDaniel Richard G2012-08-061-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Makefile.am: * Don't use @VAR@, use $(VAR). Autoconf's AC_SUBST provides us the Make variable, it allows overriding the value at the command line, and (notably) it avoids a Make parse error in the libxml2_la_LDFLAGS assignment when @MODULE_PLATFORM_LIBS@ is empty * Changed how the THREADS_W32 mechanism switches the build between testThreads.c and testThreadsWin32.c as appropriate; using AM_CONDITIONAL allows this to work cleanly and plays well with dependencies * testapi.c should be specified as BUILT_SOURCES * Create symlinks to the test/ and result/ subdirs so that the runtests target is usable in out-of-source-tree builds * Don't do MAKEFLAGS+=--silent as this is not portable to non-GNU Makes * Fixed incorrect find(1) syntax in the "cleanup" rule, and doing "rm -f" instead of just "rm" is good form * (DIST)CLEANFILES needed a bit more coverage to allow "make distcheck" to pass configure.in: * Need AC_PROG_LN_S to create test/ and result/ symlinks in Makefile.am * AC_LIBTOOL_WIN32_DLL and AM_PROG_LIBTOOL are obsolete; these have been superceded by LT_INIT * Don't rebuild docs by default, as this requires GNU Make (as implemented) * Check for uint32_t as some platforms don't provide it * Check for some more functions, and undefine HAVE_MMAP if we don't also HAVE_MUNMAP (one system I tested on actually needed this) * Changed THREADS_W32 from a filename insert into an Automake conditional * The "Copyright" file will not be in the current directory if builddir != srcdir doc/Makefile.am: * EXTRA_DIST cannot use wildcards when they refer to generated files; this breaks dependencies. What I did was define EXTRA_DIST_wc, which uses GNU Make $(wildcard) directives to build up a list of files, and EXTRA_DIST, as a literal expansion of EXTRA_DIST_wc. I also added a new rule, "check-extra-dist", to simplify checking that the two variables are equivalent. (Note that this works only when builddir == srcdir) (I can implement this differently if desired; this is just one way of doing it) * Don't define an "all" target; this steps on Automake's toes * Fixed up the "libxml2-api.xml ..." rule by using $(wildcard) for dependencies (as Make doesn't process the wildcards otherwise) and qualifying appropriate files with $(srcdir) (Note that $(srcdir) is not needed in the dependencies, thanks to VPATH, which we can count on as this is GNU-Make-only code anyway) doc/devhelp/Makefile.am: * Qualified appropriate files with $(srcdir) * Added an "uninstall-local" rule so that "make distcheck" passes doc/examples/Makefile.am: * Rather than use a wildcard that doesn't work, use a substitution that most Make programs can handle doc/examples/index.py: * Do the same here include/libxml/nanoftp.h: * Some platforms (e.g. MSVC 6) already #define INVALID_SOCKET: user@host:/cygdrive/c/Program Files/Microsoft Visual Studio/VC98/\ Include$ grep -R INVALID_SOCKET . ./WINSOCK.H:#define INVALID_SOCKET (SOCKET)(~0) ./WINSOCK2.H:#define INVALID_SOCKET (SOCKET)(~0) include/libxml/xmlversion.h.in: * Support ancient GCCs (I was actually able to build the library with 2.5 but for this bit) python/Makefile.am: * Expanded CLEANFILES to allow "make distcheck" to pass python/tests/Makefile.am: * Define CLEANFILES instead of a "clean" rule, and added tmp.xml to allow "make distcheck" to pass testRelax.c: * Use HAVE_MMAP instead of the less explicit HAVE_SYS_MMAN_H (as some systems have the header but not the function) testSchemas.c: * Use HAVE_MMAP instead of the less explicit HAVE_SYS_MMAN_H testapi.c: * Don't use putenv() if it's not available threads.c: * This fixes the following build error on Solaris 8: libtool: compile: cc -DHAVE_CONFIG_H -I. -I./include -I./include \ -D_REENTRANT -D__EXTENSIONS__ -D_REENTRANT -Dsparc -Xa -mt -v \ -xarch=v9 -xcrossfile -xO5 -c threads.c -KPIC -DPIC -o threads.o "threads.c", line 442: controlling expressions must have scalar type "threads.c", line 512: controlling expressions must have scalar type cc: acomp failed for threads.c *** Error code 1 trio.c: * Define isascii() if the system doesn't provide it trio.h: * The trio library's HAVE_CONFIG_H header is not the same as LibXML2's HAVE_CONFIG_H header; this change is needed to avoid a double-inclusion win32/configure.js: * Added support for the LZMA compression option win32/Makefile.{bcb,mingw,msvc}: * Added appropriate bits to support WITH_LZMA=1 * Install the header files under $(INCPREFIX)\libxml2\libxml instead of $(INCPREFIX)\libxml, to mirror the install location on Unix+Autotools xml2-config.in: * @MODULE_PLATFORM_LIBS@ (usually "-ldl") needs to be in there in order for `xml2-config --libs` to provide a complete set of dependencies xmllint.c: * Use HAVE_MMAP instead of the less-explicit HAVE_SYS_MMAN_H
* Fix a potential segfault due to weak symbols on pthreadsMike Hommey2010-10-151-2/+4
| | | | | | | | | | | | | In xmlInitParser, both __xmlGlobalInitMutexLock and xmlInitGlobals are called before xmlInitThreads, and both use pthread symbols. __xmlGlobalInitMutexLock does so directly, without checking if the symbol exists, and xmlInitGlobals calls xmlNewMutex, which correctly depends on libxml_is_threaded... except libxml_is_threaded is still -1 by then... And again, when releasing the global mutex in __xmlGlobalInitMutexUnlock, the pthread function is called directly. The patch changes the initialization order and make sure the functions are available before calling them
* Minor patch for conditional defines in threads.cEric Zurcher2009-10-011-3/+3
| | | | | Portability problem with CodeGear ("Borland") compiler 2007 on Windows * threads.c: use 'defined' after #elif
* 593857 try to work around thread pbm MinGW 4.4Daniel Veillard2009-09-101-23/+26
| | | | | * threads.c: try to cope with HAVE_PTHREAD_H and HAVE_WIN32_THREADS being both defined and pthread_t being a non integer
* * parser.c threads.c: change the threading initialization sequenceDaniel Veillard2009-06-041-3/+0
| | | | | | | as suggested by Igor Novoseltsev to avoid crash if xmlInitParser() is called from a thread which is not the main one, should fix #584605 daniel
* more warnings about xmlCleanupThreads and xmlCleanupParser to avoidDaniel Veillard2009-02-211-0/+8
| | | | | | | | * threads.c parser.c: more warnings about xmlCleanupThreads and xmlCleanupParser to avoid troubles like #571409 daniel svn path=/trunk/; revision=3818
* port patch from Marcus Meissner to add gcc checking for printf likeDaniel Veillard2009-01-181-1/+1
| | | | | | | | | | | | | | | * include/libxml/parser.h include/libxml/xmlwriter.h include/libxml/relaxng.h include/libxml/xmlversion.h.in include/libxml/xmlwin32version.h.in include/libxml/valid.h include/libxml/xmlschemas.h include/libxml/xmlerror.h: port patch from Marcus Meissner to add gcc checking for printf like functions parameters, should fix #65068 * doc/apibuild.py doc/*: modified the script accordingly and regenerated * xpath.c xmlmemory.c threads.c: fix a few warnings Daniel svn path=/trunk/; revision=3813
* also remove pthread key when stopping thread support, patch based on AlexDaniel Veillard2009-01-181-0/+8
| | | | | | | | * threads.c: also remove pthread key when stopping thread support, patch based on Alex Ott one should fix #564723 daniel svn path=/trunk/; revision=3810
* patch from Daniel Zimmermann fixing a memory leak in an edge case, solvesDaniel Veillard2009-01-181-0/+1
| | | | | | | | * threads.c: patch from Daniel Zimmermann fixing a memory leak in an edge case, solves #562230 Daniel svn path=/trunk/; revision=3809
* fix a small initialization problem raised by Ashwin increase testingDaniel Veillard2008-08-271-0/+6
| | | | | | | | | | | | | * threads.c: fix a small initialization problem raised by Ashwin * testapi.c gentest.py: increase testing especially for document with an internal subset, and entities * tree.c: fix a deallocation issue when unlinking entities from a document. * valid.c: fix a missing entry point test not found previously. * doc/*: regenerated the APIs, docs etc. daniel svn path=/trunk/; revision=3778
* added new function xmlSchemaValidCtxtGetParserCtxt based on HolgerDaniel Veillard2008-04-111-1/+1
| | | | | | | | | | | | | | | | * include/libxml/xmlschemas.h xmlschemas.c: added new function xmlSchemaValidCtxtGetParserCtxt based on Holger Kaelberer patch * doc/apibuild.py doc/*: regenerated the doc, chased why the new function didn't got any documentation, added more checking in the generator * include/libxml/relaxng.h include/libxml/schematron.h include/libxml/xmlschemas.h include/libxml/c14n.h include/libxml/xmlregexp.h include/libxml/globals.h include/libxml/xmlreader.h threads.c xmlschemas.c: various changes and cleanups following the new reports Daniel svn path=/trunk/; revision=3738
* check some allocation with Ashwin patch DanielDaniel Veillard2008-03-241-3/+8
| | | | | | | * threads.c: check some allocation with Ashwin patch Daniel svn path=/trunk/; revision=3711
* check some malloc returns with Ashwin patch, add error messages andDaniel Veillard2008-03-181-209/+242
| | | | | | | | * threads.c: check some malloc returns with Ashwin patch, add error messages and reindent the module. Daniel svn path=/trunk/; revision=3709
* remove unused variable in __xmlGlobalInitMutexLock reported by Hannes EderDaniel Veillard2007-11-231-2/+0
| | | | | | | | * threads.c: remove unused variable in __xmlGlobalInitMutexLock reported by Hannes Eder Daniel svn path=/trunk/; revision=3666
* __xmlGlobalInitMutexDestroy() will free global_init_lock on Win32. PatchRob Richards2007-11-161-0/+19
| | | | | | | | * globals.c threads.c include/libxml/threads.h: __xmlGlobalInitMutexDestroy() will free global_init_lock on Win32. Patch from Marc-Antoine Ruel. svn path=/trunk/; revision=3664
* *use specified calling convention Rob Richards2007-06-081-1/+5
| | | | | | | for xmlDllMain. Old SDKs (VC6) only support InterlockedCompareExchange. add xmlDllMain to header for win32 when building for static dll svn path=/trunk/; revision=3624
* small cleanup to avoid packaging .svn applied patch to avoid a problem inDaniel Veillard2007-02-121-0/+83
| | | | | | | | | * Makefile.am: small cleanup to avoid packaging .svn * libxml.h threads.c parser.c: applied patch to avoid a problem in concurrent threaded initialization fix from Ted Phelps Daniel svn path=/trunk/; revision=3582
* patch from Andrew W. Nosenko, xmlFreeRMutex forgot to destroy theDaniel Veillard2006-06-291-1/+3
| | | | | | * threads.c: patch from Andrew W. Nosenko, xmlFreeRMutex forgot to destroy the condition associated to the mutex. Daniel
* updated the docs and rebuild releasing 2.6.21 removedLIBXML2_2_6_21Daniel Veillard2005-09-041-18/+0
| | | | | | | | | * NEWS elfgcchack.h testapi.c doc/*: updated the docs and rebuild releasing 2.6.21 * include/libxml/threads.h threads.c: removed xmlIsThreadsEnabled() * threads.c include/libxml/threads.h xmllint.c: added the more generic xmlHasFeature() as suggested by Bjorn Reese, xmllint uses it. Daniel
* avoid passing a char[] as snprintf first argument. implementedDaniel Veillard2005-09-021-0/+18
| | | | | | | | | * encoding.c parserInternals.c: avoid passing a char[] as snprintf first argument. * threads.c include/libxml/threads.h: implemented xmlIsThreadsEnabled() based on Andrew W. Nosenko idea. * doc/* elfgcchack.h: regenerated the API Daniel
* applied a patch from Marcus Boerger to fix problems with callingDaniel Veillard2005-07-211-1/+1
| | | | | | | | | | | | * error.c globals.c parser.c runtest.c testHTML.c testSAX.c threads.c valid.c xmllint.c xmlreader.c xmlschemas.c xmlstring.c xmlwriter.c include/libxml/parser.h include/libxml/relaxng.h include/libxml/valid.h include/libxml/xmlIO.h include/libxml/xmlerror.h include/libxml/xmlexports.h include/libxml/xmlschemas.h: applied a patch from Marcus Boerger to fix problems with calling conventions on Windows this should fix #309757 Daniel
* on linux/gcc use weak definitions to avoid linking with pthread library onDaniel Veillard2005-05-041-9/+96
| | | | | | | | * Makefile.am configure.in threads.c: on linux/gcc use weak definitions to avoid linking with pthread library on non-threaded environments. * xpath.c: applied patch from Mark Vakoc w.r.t. a buggy namespace list allocation. Daniel
* revamped the elfgcchack.h format to cope with gcc4 change of aliasingDaniel Veillard2005-04-011-0/+2
| | | | | | | | | | | * doc/apibuild.py doc/elfgcchack.xsl: revamped the elfgcchack.h format to cope with gcc4 change of aliasing allowed scopes, had to add extra informations to doc/libxml2-api.xml to separate the header from the c module source. * *.c: updated all c library files to add a #define bottom_xxx and reimport elfgcchack.h thereafter, and a bit of cleanups. * doc//* testapi.c: regenerated when rebuilding the API Daniel
* new version with fixes from Rob Richards DanielDaniel Veillard2005-02-251-3/+3
| | | | | * threads.c: new version with fixes from Rob Richards Daniel
* applied patch from Rich Salz for multithreading on Windows. DanielDaniel Veillard2005-02-241-12/+22
| | | | | | * threads.c: applied patch from Rich Salz for multithreading on Windows. Daniel
* fixed nasty bug #156087 DanielDaniel Veillard2004-10-221-2/+7
| | | | | * threads.c: fixed nasty bug #156087 Daniel
* couple of memory fixes from Mark Vakoc reported by Purify on Windows.Daniel Veillard2004-09-221-0/+2
| | | | | | * threads.c uri.c: couple of memory fixes from Mark Vakoc reported by Purify on Windows. Daniel
* minor enhancement to prevent comment with unreferenced variable. editedWilliam M. Brack2003-11-181-0/+6
| | | | | | | | * genChRanges.py, chvalid.c, include/libxml/chvalid.h: minor enhancement to prevent comment with unreferenced variable. * threads.c xmlreader.c xmlwriter.c: edited some comments to improve auto-generation of documentation * apibuild.py: minor change to an error message
* second BeOS patch from Marcin 'Shard' Konicki DanielDaniel Veillard2003-11-011-6/+9
| | | | | | * tree.c nanohttp.c threads.c: second BeOS patch from Marcin 'Shard' Konicki Daniel
* applied patch from Marcin 'Shard' Konicki to provide BeOS thread support.Daniel Veillard2003-10-291-1/+98
| | | | | | * nanoftp.c nanohttp.c testThreads.c threads.c: applied patch from Marcin 'Shard' Konicki to provide BeOS thread support. Daniel
* patch from Mike Hommey applied Windows patch from Jesse Pelton andDaniel Veillard2003-10-111-2/+2
| | | | | | | | | * configure.in: patch from Mike Hommey * threads.c: applied Windows patch from Jesse Pelton and Stephane Bidoul * parser.c: fix the potentially nasty access to ctxt->serror without checking first that the SAX block is version 2 Daniel
* cleaning up XPath error reporting that time. applied the two patches forDaniel Veillard2003-10-071-20/+81
| | | | | | | | | | | | | | | * error.c include/libxml/xmlerror.h include/libxml/xpath.h include/libxml/xpathInternals.h xpath.c: cleaning up XPath error reporting that time. * threads.c: applied the two patches for TLS threads on Windows from Jesse Pelton * parser.c: tiny safety patch for xmlStrPrintf() make sure the return is always zero terminated. Should also help detecting passing wrong buffer size easilly. * result/VC/* result/valid/rss.xml.err result/valid/xlink.xml.err: updated the results to follow the errors string generated by last commit. Daniel
* Okay this is scary but it is just adding a configure option to disableDaniel Veillard2003-09-291-0/+4
| | | | | | | | | | | | | | | | | | * HTMLtree.c SAX2.c c14n.c catalog.c configure.in debugXML.c encoding.c entities.c nanoftp.c nanohttp.c parser.c relaxng.c testAutomata.c testC14N.c testHTML.c testRegexp.c testRelax.c testSchemas.c testXPath.c threads.c tree.c valid.c xmlIO.c xmlcatalog.c xmllint.c xmlmemory.c xmlreader.c xmlschemas.c example/gjobread.c include/libxml/HTMLtree.h include/libxml/c14n.h include/libxml/catalog.h include/libxml/debugXML.h include/libxml/entities.h include/libxml/nanohttp.h include/libxml/relaxng.h include/libxml/tree.h include/libxml/valid.h include/libxml/xmlIO.h include/libxml/xmlschemas.h include/libxml/xmlversion.h.in include/libxml/xpathInternals.h python/libxml.c: Okay this is scary but it is just adding a configure option to disable output, this touches most of the files. Daniel
* backport of a thread bugfix from 2_5_X branch DanielDaniel Veillard2003-09-111-1/+5
| | | | | * threads.c: backport of a thread bugfix from 2_5_X branch Daniel
* fixing bug #120870 try to avoid problem with uninitialized mutexes DanielDaniel Veillard2003-08-281-1/+3
| | | | | | * globals.c threads.c: fixing bug #120870 try to avoid problem with uninitialized mutexes Daniel
* Minor changes to comments, etc. for improving documentation generationWilliam M. Brack2003-08-151-1/+6
| | | | | | | | * encoding.c, threads.c, include/libxml/HTMLparser.h, doc/libxml2-api.xml: Minor changes to comments, etc. for improving documentation generation * doc/Makefile.am: further adjustment to auto-generation of win32/libxml2.def.src
* hum try to avoid some troubles when the library is not initialized and oneDaniel Veillard2003-08-081-1/+3
| | | | | | | | | | * HTMLtree.c tree.c threads.c: hum try to avoid some troubles when the library is not initialized and one try to save, the locks in threaded env might not been initialized, playing safe * xmlschemastypes.c: apply patch for hexBinary from Charles Bozeman * test/schemas/hexbinary_* result/schemas/hexbinary_*: also added his tests to the regression suite. Daniel