|
|
| version 1.167, 2004/02/11 09:18:24 | version 1.172, 2004/02/13 14:01:08 |
|---|---|
| Line 1 | Line 1 |
| /** @file | /** @file |
| Parser: globals. | Parser: globals. |
| Copyright (c) 2001-2003 ArtLebedev Group (http://www.artlebedev.com) | Copyright (c) 2001-2004 ArtLebedev Group (http://www.artlebedev.com) |
| Author: Alexandr Petrosian <paf@design.ru> (http://paf.design.ru) | Author: Alexandr Petrosian <paf@design.ru> (http://paf.design.ru) |
| */ | */ |
| Line 100 public: | Line 100 public: |
| } | } |
| }; | }; |
| Hash<pa_thread_t, XML_Generic_error_info*> xml_generic_error_infos; | static Hash<pa_thread_t, XML_Generic_error_info*> xml_generic_error_infos; |
| static void xmlParserGenericErrorFunc(void * /*ctx*/, const char* msg, ...) { | static void xmlParserGenericErrorFunc(void * /*ctx*/, const char* msg, ...) { |
| //_asm int 3; | //_asm int 3; |
| pa_thread_t thread_id=pa_get_thread_id(); | pa_thread_t thread_id=pa_get_thread_id(); |
| // infinitely looking for free slot to fill it | XML_Generic_error_info* p; |
| while(true) { | { |
| SYNCHRONIZED; // find+fill blocked | SYNCHRONIZED; // find+fill blocked |
| // first try to get existing for this thread_id | // first try to get existing for this thread_id |
| XML_Generic_error_info *p=xml_generic_error_infos.get(thread_id); | p=xml_generic_error_infos.get(thread_id); |
| if(!p) // occupy empty one | if(!p) // occupy empty one |
| xml_generic_error_infos.put(thread_id, (p=new(PointerFreeGC) XML_Generic_error_info)); | xml_generic_error_infos.put(thread_id, (p=new(PointerFreeGC) XML_Generic_error_info)); |
| va_list args; | |
| va_start(args, msg); | |
| p->used+=vsnprintf(p->buf+p->used, sizeof(p->buf)-p->used, msg, args); | |
| va_end(args); | |
| break; | |
| } | } |
| va_list args; | |
| va_start(args, msg); | |
| p->used+=vsnprintf(p->buf+p->used, sizeof(p->buf)-p->used, msg, args); | |
| va_end(args); | |
| } | } |
| bool xmlHaveGenericErrors() { | bool xmlHaveGenericErrors() { |
| Line 165 static char *pa_GC_strdup(const char *s) | Line 163 static char *pa_GC_strdup(const char *s) |
| return 0; | return 0; |
| size_t size=strlen(s)+1; | size_t size=strlen(s)+1; |
| char *result=(char *)GC_malloc_atomic(size); | char *result=(char *)GC_MALLOC_ATOMIC(size); |
| if(!result) | if(!result) |
| SAPI::abort("out of memory (while duplicating XML string [size=%d])", size); | SAPI::abort("out of memory (while duplicating XML string [size=%d])", size); |
| memcpy(result, s, size); | memcpy(result, s, size); |
| #ifdef PA_DEBUG_XML_GC_MEMORY | |
| fprintf(stderr, "pa_GC_strdup(%p=%s, length=%d)=0x%p\n", s, s, size, result); | |
| #endif | |
| return result; | return result; |
| } | } |
| Line 364 void pa_globals_init() { | Line 365 void pa_globals_init() { |
| # ifdef _DEBUG | # ifdef _DEBUG |
| # ifdef LIBXML_STATIC | # ifdef LIBXML_STATIC |
| # pragma comment(lib, GNOME_LIBS "/libxml2-x.x.x/win32/binaries-debug/libxml2_a.lib") | # pragma comment(lib, GNOME_LIBS "/libxml2-x.x.x/win32/debug/lib/libxml2_a.lib") |
| # else | # else |
| # pragma comment(lib, GNOME_LIBS "/libxml2-x.x.x/win32/binaries-debug/libxml2.lib") | # pragma comment(lib, GNOME_LIBS "/libxml2-x.x.x/win32/debug/lib/libxml2.lib") |
| # endif | # endif |
| # ifdef LIBXSLT_STATIC | # ifdef LIBXSLT_STATIC |
| # pragma comment(lib, GNOME_LIBS "/libxslt-x.x.x/win32/binaries-debug/libxslt_a.lib") | # pragma comment(lib, GNOME_LIBS "/libxslt-x.x.x/win32/debug/lib/libxslt_a.lib") |
| # else | # else |
| # pragma comment(lib, GNOME_LIBS "/libxslt-x.x.x/win32/binaries-debug/libxslt.lib") | # pragma comment(lib, GNOME_LIBS "/libxslt-x.x.x/win32/debug/lib/libxslt.lib") |
| # endif | # endif |
| # ifdef LIBEXSLT_STATIC | # ifdef LIBEXSLT_STATIC |
| # pragma comment(lib, GNOME_LIBS "/libxslt-x.x.x/win32/binaries-debug/libexslt_a.lib") | # pragma comment(lib, GNOME_LIBS "/libxslt-x.x.x/win32/debug/lib/libexslt_a.lib") |
| # else | # else |
| # pragma comment(lib, GNOME_LIBS "/libxslt-x.x.x/win32/binaries-debug/libexslt.lib") | # pragma comment(lib, GNOME_LIBS "/libxslt-x.x.x/win32/debug/lib/libexslt.lib") |
| # endif | # endif |
| # ifdef LIBGDOME_STATIC | # ifdef LIBGDOME_STATIC |
| # pragma comment(lib, GNOME_LIBS "/gdome2-x.x.x/win32/dsp/libgdome_DebugStatic/libgdome.lib") | # pragma comment(lib, GNOME_LIBS "/gdome2-x.x.x/win32/DebugStatic/libgdome.lib") |
| # else | # else |
| # pragma comment(lib, GNOME_LIBS "/gdome2-x.x.x/win32/dsp/libgdome_DebugDynamic/libgdome.lib") | # pragma comment(lib, GNOME_LIBS "/gdome2-x.x.x/win32/DebugDynamic/libgdome.lib") |
| # endif | # endif |
| #else | #else |
| # ifdef LIBXML_STATIC | # ifdef LIBXML_STATIC |
| # pragma comment(lib, GNOME_LIBS "/libxml2-x.x.x/win32/binaries-release/libxml2_a.lib") | # pragma comment(lib, GNOME_LIBS "/libxml2-x.x.x/win32/release/lib/libxml2_a.lib") |
| # else | # else |
| # pragma comment(lib, GNOME_LIBS "/libxml2-x.x.x/win32/binaries-release/libxml2.lib") | # pragma comment(lib, GNOME_LIBS "/libxml2-x.x.x/win32/release/lib/libxml2.lib") |
| # endif | # endif |
| # ifdef LIBXSLT_STATIC | # ifdef LIBXSLT_STATIC |
| # pragma comment(lib, GNOME_LIBS "/libxslt-x.x.x/win32/binaries-release/libxslt_a.lib") | # pragma comment(lib, GNOME_LIBS "/libxslt-x.x.x/win32/release/lib/libxslt_a.lib") |
| # else | # else |
| # pragma comment(lib, GNOME_LIBS "/libxslt-x.x.x/win32/binaries-release/libxslt.lib") | # pragma comment(lib, GNOME_LIBS "/libxslt-x.x.x/win32/release/lib/libxslt.lib") |
| # endif | # endif |
| # ifdef LIBEXSLT_STATIC | # ifdef LIBEXSLT_STATIC |
| # pragma comment(lib, GNOME_LIBS "/libxslt-x.x.x/win32/binaries-release/libexslt_a.lib") | # pragma comment(lib, GNOME_LIBS "/libxslt-x.x.x/win32/release/lib/libexslt_a.lib") |
| # else | # else |
| # pragma comment(lib, GNOME_LIBS "/libxslt-x.x.x/win32/binaries-release/libexslt.lib") | # pragma comment(lib, GNOME_LIBS "/libxslt-x.x.x/win32/release/lib/libexslt.lib") |
| # endif | # endif |
| # ifdef LIBGDOME_STATIC | # ifdef LIBGDOME_STATIC |
| # pragma comment(lib, GNOME_LIBS "/gdome2-x.x.x/win32/dsp/libgdome_ReleaseStatic/libgdome.lib") | # pragma comment(lib, GNOME_LIBS "/gdome2-x.x.x/win32/ReleaseStatic/libgdome.lib") |
| # else | # else |
| # pragma comment(lib, GNOME_LIBS "/gdome2-x.x.x/win32/dsp/libgdome_ReleaseDynamic/libgdome.lib") | # pragma comment(lib, GNOME_LIBS "/gdome2-x.x.x/win32/ReleaseDynamic/libgdome.lib") |
| # endif | # endif |
| # endif | # endif |