• Show log

    Commit

  • Hash : 453bdfb9
    Author : Kevin Puetz
    Date : 2020-01-13T18:28:34

    Fix potentially-uninitialized critical section in Win32 DLL builds
    
    If non-parser parts of libxml (e.g. xmlwriter) are used before a parser,
    xmlOnceInit may have run (e.g. via the many paths to xmlGetGlobalState),
    but not xmlInitThreads (which is called only by xmlInitParser)
    
    Once globalkey != TLS_OUT_OF_INDEXES (which can happen in many ways),
    DLLMAIN(DLL_THREAD_DETACH) may attempt to lock cleanup_helpers_cs
    before it is valid. This may happen even if the thread whose exit
    is triggering DllMain is from code which is not linked to libxml.
    
    globalkey and cleanup_helpers_cs should be initialized together,
    with cleanup_helpers_cs initialized first and deleted last.
    

  • README

  •                   XML toolkit from the GNOME project
    
    Full documentation is available on-line at
        http://xmlsoft.org/
    
    This code is released under the MIT Licence see the Copyright file.
    
    To build on an Unixised setup:
       ./configure ; make ; make install
       if the ./configure file does not exist, run ./autogen.sh instead.
    To build on Windows:
       see instructions on win32/Readme.txt
    
    To assert build quality:
       on an Unixised setup:
          run make tests
       otherwise:
           There is 3 standalone tools runtest.c runsuite.c testapi.c, which
           should compile as part of the build or as any application would.
           Launch them from this directory to get results, runtest checks 
           the proper functionning of libxml2 main APIs while testapi does
           a full coverage check. Report failures to the list.
    
    To report bugs, follow the instructions at: 
      http://xmlsoft.org/bugs.html
    
    A mailing-list xml@gnome.org is available, to subscribe:
        http://mail.gnome.org/mailman/listinfo/xml
    
    The list archive is at:
        http://mail.gnome.org/archives/xml/
    
    All technical answers asked privately will be automatically answered on
    the list and archived for public access unless privacy is explicitly
    required and justified.
    
    Daniel Veillard
    
    $Id$