Author: jim Date: Tue Aug 8 10:40:53 2017 New Revision: 1804389 URL: http://svn.apache.org/viewvc?rev=1804389&view=rev Log: revert 1804232 for 4.1.4... still no work. Use ugly but working patch from RC1
Modified: openoffice/branches/AOO414/main/expat/expat-2.2.3.patch Modified: openoffice/branches/AOO414/main/expat/expat-2.2.3.patch URL: http://svn.apache.org/viewvc/openoffice/branches/AOO414/main/expat/expat-2.2.3.patch?rev=1804389&r1=1804388&r2=1804389&view=diff ============================================================================== --- openoffice/branches/AOO414/main/expat/expat-2.2.3.patch (original) +++ openoffice/branches/AOO414/main/expat/expat-2.2.3.patch Tue Aug 8 10:40:53 2017 @@ -1,6 +1,6 @@ --- misc/expat-2.2.3/lib/makefile.mk Wed Aug 20 14:33:55 2008 +++ misc/build/expat-2.2.3/lib/makefile.mk Wed Aug 20 14:26:42 2008 -@@ -1 +1,85 @@ +@@ -1 +1,83 @@ -dummy +#************************************************************** +# @@ -45,23 +45,21 @@ +CDEFS+=-DHAVE_MEMMOVE -DHAVE_BCOPY +.ENDIF # "$(OS)"=="MACOSX" + ++SLOFILES=$(SLO)$/xmlparse.obj \ ++ $(SLO)$/xmlrole.obj \ ++ $(SLO)$/xmltok.obj ++ +SECOND_BUILD=UNICODE +UNICODE_SLOFILES=$(SLO)$/xmlparse.obj +UNICODECDEFS+=-DXML_UNICODE + -+.IF "$(OS)"=="WNT" -+ LOADLIBOBJFILE=$(SLO)/loadlibrary.obj -+.ELSE -+ LOADLIBOBJFILE= -+.ENDIF -+ +LIB1ARCHIV=$(LB)$/libascii_$(TARGET)_xmlparse.a +LIB1TARGET=$(SLB)$/ascii_$(TARGET)_xmlparse.lib -+LIB1OBJFILES=$(SLO)$/xmlparse.obj $(LOADLIBOBJFILE) ++LIB1OBJFILES=$(SLO)$/xmlparse.obj + +LIB2ARCHIV=$(LB)$/lib$(TARGET)_xmlparse.a +LIB2TARGET=$(SLB)$/$(TARGET)_xmlparse.lib -+LIB2OBJFILES =$(REAL_UNICODE_SLOFILES) $(LOADLIBOBJFILE) ++LIB2OBJFILES =$(REAL_UNICODE_SLOFILES) + +LIB3ARCHIV=$(LB)$/lib$(TARGET)_xmltok.a +LIB3TARGET=$(SLB)$/$(TARGET)_xmltok.lib @@ -87,3 +85,329 @@ +.INCLUDE : set_wntx64.mk +.INCLUDE : target.mk +.INCLUDE : tg_wntx64.mk +diff -ur misc/expat-2.2.3/lib/xmlparse.c misc/build/expat-2.2.3/lib/xmlparse.c +--- misc/expat-2.2.3/lib/xmlparse.c 2017-08-02 09:40:48.000000000 -0400 ++++ misc/build/expat-2.2.3/lib/xmlparse.c 2017-08-04 18:33:34.000000000 -0400 +@@ -1,3 +1,145 @@ ++/*************************************************************************** ++ * _ _ ____ _ ++ * Project ___| | | | _ \| | ++ * / __| | | | |_) | | ++ * | (__| |_| | _ <| |___ ++ * \___|\___/|_| \_\_____| ++ * ++ * Copyright (C) 2016 - 2017, Steve Holme, <steve_ho...@hotmail.com>. ++ * ++ * All rights reserved. ++ * ++ * Permission to use, copy, modify, and distribute this software for any ++ * purpose with or without fee is hereby granted, provided that the above ++ * copyright notice and this permission notice appear in all copies. ++ * ++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, ++ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF ++ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ++ * THIRD PARTY RIGHTS. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE ++ * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF ++ * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH ++ * THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ++ * ++ * Except as contained in this notice, the name of a copyright holder shall ++ * not be used in advertising or otherwise to promote the sale, use or other ++ * dealings in this Software without prior written authorization of the ++ * copyright holder. ++ * ++ ***************************************************************************/ ++ ++#if defined(_WIN32) ++ ++#include <windows.h> ++#include <tchar.h> ++ ++ ++HMODULE _Expat_LoadLibrary(LPCTSTR filename); ++ ++ ++#if !defined(LOAD_WITH_ALTERED_SEARCH_PATH) ++#define LOAD_WITH_ALTERED_SEARCH_PATH 0x00000008 ++#endif ++ ++#if !defined(LOAD_LIBRARY_SEARCH_SYSTEM32) ++#define LOAD_LIBRARY_SEARCH_SYSTEM32 0x00000800 ++#endif ++ ++/* We use our own typedef here since some headers might lack these */ ++typedef HMODULE (APIENTRY *LOADLIBRARYEX_FN)(LPCTSTR, HANDLE, DWORD); ++ ++/* See function definitions in winbase.h */ ++#ifdef UNICODE ++# ifdef _WIN32_WCE ++# define LOADLIBARYEX L"LoadLibraryExW" ++# else ++# define LOADLIBARYEX "LoadLibraryExW" ++# endif ++#else ++# define LOADLIBARYEX "LoadLibraryExA" ++#endif ++ ++ ++/* ++ * _Expat_LoadLibrary() ++ * ++ * This is used to dynamically load DLLs using the most secure method available ++ * for the version of Windows that we are running on. ++ * ++ * Parameters: ++ * ++ * filename [in] - The filename or full path of the DLL to load. If only the ++ * filename is passed then the DLL will be loaded from the ++ * Windows system directory. ++ * ++ * Returns the handle of the module on success; otherwise NULL. ++ */ ++HMODULE _Expat_LoadLibrary(LPCTSTR filename) ++{ ++ HMODULE hModule = NULL; ++ LOADLIBRARYEX_FN pLoadLibraryEx = NULL; ++ ++ /* Get a handle to kernel32 so we can access it's functions at runtime */ ++ HMODULE hKernel32 = GetModuleHandle(TEXT("kernel32")); ++ if(!hKernel32) ++ return NULL; ++ ++ /* Attempt to find LoadLibraryEx() which is only available on Windows 2000 ++ and above */ ++ pLoadLibraryEx = (LOADLIBRARYEX_FN) GetProcAddress(hKernel32, LOADLIBARYEX); ++ ++ /* Detect if there's already a path in the filename and load the library if ++ there is. Note: Both back slashes and forward slashes have been supported ++ since the earlier days of DOS at an API level although they are not ++ supported by command prompt */ ++ if(_tcspbrk(filename, TEXT("\\/"))) { ++ /** !checksrc! disable BANNEDFUNC 1 **/ ++ hModule = pLoadLibraryEx ? ++ pLoadLibraryEx(filename, NULL, LOAD_WITH_ALTERED_SEARCH_PATH) : ++ LoadLibrary(filename); ++ } ++ /* Detect if KB2533623 is installed, as LOAD_LIBARY_SEARCH_SYSTEM32 is only ++ supported on Windows Vista, Windows Server 2008, Windows 7 and Windows ++ Server 2008 R2 with this patch or natively on Windows 8 and above */ ++ else if(pLoadLibraryEx && GetProcAddress(hKernel32, "AddDllDirectory")) { ++ /* Load the DLL from the Windows system directory */ ++ hModule = pLoadLibraryEx(filename, NULL, LOAD_LIBRARY_SEARCH_SYSTEM32); ++ } ++ else { ++ /* Attempt to get the Windows system path */ ++ UINT systemdirlen = GetSystemDirectory(NULL, 0); ++ if(systemdirlen) { ++ /* Allocate space for the full DLL path (Room for the null terminator ++ is included in systemdirlen) */ ++ size_t filenamelen = _tcslen(filename); ++ TCHAR *path = malloc(sizeof(TCHAR) * (systemdirlen + 1 + filenamelen)); ++ if(path && GetSystemDirectory(path, systemdirlen)) { ++ /* Calculate the full DLL path */ ++ _tcscpy(path + _tcslen(path), TEXT("\\")); ++ _tcscpy(path + _tcslen(path), filename); ++ ++ /* Load the DLL from the Windows system directory */ ++ /** !checksrc! disable BANNEDFUNC 1 **/ ++ hModule = pLoadLibraryEx ? ++ pLoadLibraryEx(path, NULL, LOAD_WITH_ALTERED_SEARCH_PATH) : ++ LoadLibrary(path); ++ ++ } ++ free(path); ++ } ++ } ++ ++ return hModule; ++} ++ ++#else /* defined(_WIN32) */ ++ ++/* ISO C requires a translation unit to contain at least one declaration ++ [-Wempty-translation-unit] */ ++typedef int _TRANSLATION_UNIT_LOAD_LIBRARY_C_NOT_EMTPY; ++ ++#endif /* defined(_WIN32) */ ++ + /* Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd + See the file COPYING for copying permission. + +@@ -314,7 +456,7 @@ + int nDefaultAtts; + int allocDefaultAtts; + DEFAULT_ATTRIBUTE *defaultAtts; +-} ELEMENT_TYPE; ++} XMLPARSE_ELEMENT_TYPE; + + typedef struct { + HASH_TABLE generalEntities; +@@ -414,7 +556,7 @@ + addBinding(XML_Parser parser, PREFIX *prefix, const ATTRIBUTE_ID *attId, + const XML_Char *uri, BINDING **bindingsPtr); + static int +-defineAttribute(ELEMENT_TYPE *type, ATTRIBUTE_ID *, XML_Bool isCdata, ++defineAttribute(XMLPARSE_ELEMENT_TYPE *type, ATTRIBUTE_ID *, XML_Bool isCdata, + XML_Bool isId, const XML_Char *dfltValue, XML_Parser parser); + static enum XML_Error + storeAttributeValue(XML_Parser parser, const ENCODING *, XML_Bool isCdata, +@@ -426,7 +568,7 @@ + getAttributeId(XML_Parser parser, const ENCODING *enc, const char *start, + const char *end); + static int +-setElementTypePrefix(XML_Parser parser, ELEMENT_TYPE *); ++setElementTypePrefix(XML_Parser parser, XMLPARSE_ELEMENT_TYPE *); + static enum XML_Error + storeEntityValue(XML_Parser parser, const ENCODING *enc, const char *start, + const char *end); +@@ -487,7 +629,7 @@ + + static int FASTCALL nextScaffoldPart(XML_Parser parser); + static XML_Content * build_model(XML_Parser parser); +-static ELEMENT_TYPE * ++static XMLPARSE_ELEMENT_TYPE * + getElementType(XML_Parser parser, const ENCODING *enc, + const char *ptr, const char *end); + +@@ -585,7 +727,7 @@ + const XML_Char *m_declAttributeType; + const XML_Char *m_declNotationName; + const XML_Char *m_declNotationPublicId; +- ELEMENT_TYPE *m_declElementType; ++ XMLPARSE_ELEMENT_TYPE *m_declElementType; + ATTRIBUTE_ID *m_declAttributeId; + XML_Bool m_declAttributeIsCdata; + XML_Bool m_declAttributeIsId; +@@ -843,7 +985,6 @@ + #ifdef _WIN32 + + typedef BOOLEAN (APIENTRY *RTLGENRANDOM_FUNC)(PVOID, ULONG); +-HMODULE _Expat_LoadLibrary(LPCTSTR filename); /* see loadlibrary.c */ + + /* Obtain entropy on Windows XP / Windows Server 2003 and later. + * Hint on RtlGenRandom and the following article from libsodium. +@@ -1285,7 +1426,7 @@ + XML_AttlistDeclHandler oldAttlistDeclHandler; + XML_EntityDeclHandler oldEntityDeclHandler; + XML_XmlDeclHandler oldXmlDeclHandler; +- ELEMENT_TYPE * oldDeclElementType; ++ XMLPARSE_ELEMENT_TYPE * oldDeclElementType; + + void *oldUserData; + void *oldHandlerArg; +@@ -3181,7 +3322,7 @@ + BINDING **bindingsPtr) + { + DTD * const dtd = _dtd; /* save one level of indirection */ +- ELEMENT_TYPE *elementType; ++ XMLPARSE_ELEMENT_TYPE *elementType; + int nDefaultAtts; + const XML_Char **appAtts; /* the attribute list for the application */ + int attIndex = 0; +@@ -3194,13 +3335,13 @@ + const XML_Char *localPart; + + /* lookup the element type name */ +- elementType = (ELEMENT_TYPE *)lookup(parser, &dtd->elementTypes, tagNamePtr->str,0); ++ elementType = (XMLPARSE_ELEMENT_TYPE *)lookup(parser, &dtd->elementTypes, tagNamePtr->str,0); + if (!elementType) { + const XML_Char *name = poolCopyString(&dtd->pool, tagNamePtr->str); + if (!name) + return XML_ERROR_NO_MEMORY; +- elementType = (ELEMENT_TYPE *)lookup(parser, &dtd->elementTypes, name, +- sizeof(ELEMENT_TYPE)); ++ elementType = (XMLPARSE_ELEMENT_TYPE *)lookup(parser, &dtd->elementTypes, name, ++ sizeof(XMLPARSE_ELEMENT_TYPE)); + if (!elementType) + return XML_ERROR_NO_MEMORY; + if (ns && !setElementTypePrefix(parser, elementType)) +@@ -5202,7 +5343,7 @@ + quant = XML_CQUANT_PLUS; + elementContent: + if (dtd->in_eldecl) { +- ELEMENT_TYPE *el; ++ XMLPARSE_ELEMENT_TYPE *el; + const XML_Char *name; + int nameLen; + const char *nxt = (quant == XML_CQUANT_NONE +@@ -6010,7 +6151,7 @@ + + + static int +-defineAttribute(ELEMENT_TYPE *type, ATTRIBUTE_ID *attId, XML_Bool isCdata, ++defineAttribute(XMLPARSE_ELEMENT_TYPE *type, ATTRIBUTE_ID *attId, XML_Bool isCdata, + XML_Bool isId, const XML_Char *value, XML_Parser parser) + { + DEFAULT_ATTRIBUTE *att; +@@ -6054,7 +6195,7 @@ + } + + static int +-setElementTypePrefix(XML_Parser parser, ELEMENT_TYPE *elementType) ++setElementTypePrefix(XML_Parser parser, XMLPARSE_ELEMENT_TYPE *elementType) + { + DTD * const dtd = _dtd; /* save one level of indirection */ + const XML_Char *name; +@@ -6367,7 +6508,7 @@ + HASH_TABLE_ITER iter; + hashTableIterInit(&iter, &(p->elementTypes)); + for (;;) { +- ELEMENT_TYPE *e = (ELEMENT_TYPE *)hashTableIterNext(&iter); ++ XMLPARSE_ELEMENT_TYPE *e = (XMLPARSE_ELEMENT_TYPE *)hashTableIterNext(&iter); + if (!e) + break; + if (e->allocDefaultAtts != 0) +@@ -6409,7 +6550,7 @@ + HASH_TABLE_ITER iter; + hashTableIterInit(&iter, &(p->elementTypes)); + for (;;) { +- ELEMENT_TYPE *e = (ELEMENT_TYPE *)hashTableIterNext(&iter); ++ XMLPARSE_ELEMENT_TYPE *e = (XMLPARSE_ELEMENT_TYPE *)hashTableIterNext(&iter); + if (!e) + break; + if (e->allocDefaultAtts != 0) +@@ -6493,16 +6634,16 @@ + + for (;;) { + int i; +- ELEMENT_TYPE *newE; ++ XMLPARSE_ELEMENT_TYPE *newE; + const XML_Char *name; +- const ELEMENT_TYPE *oldE = (ELEMENT_TYPE *)hashTableIterNext(&iter); ++ const XMLPARSE_ELEMENT_TYPE *oldE = (XMLPARSE_ELEMENT_TYPE *)hashTableIterNext(&iter); + if (!oldE) + break; + name = poolCopyString(&(newDtd->pool), oldE->name); + if (!name) + return 0; +- newE = (ELEMENT_TYPE *)lookup(oldParser, &(newDtd->elementTypes), name, +- sizeof(ELEMENT_TYPE)); ++ newE = (XMLPARSE_ELEMENT_TYPE *)lookup(oldParser, &(newDtd->elementTypes), name, ++ sizeof(XMLPARSE_ELEMENT_TYPE)); + if (!newE) + return 0; + if (oldE->nDefaultAtts) { +@@ -7166,7 +7307,7 @@ + return ret; + } + +-static ELEMENT_TYPE * ++static XMLPARSE_ELEMENT_TYPE * + getElementType(XML_Parser parser, + const ENCODING *enc, + const char *ptr, +@@ -7174,11 +7315,11 @@ + { + DTD * const dtd = _dtd; /* save one level of indirection */ + const XML_Char *name = poolStoreString(&dtd->pool, enc, ptr, end); +- ELEMENT_TYPE *ret; ++ XMLPARSE_ELEMENT_TYPE *ret; + + if (!name) + return NULL; +- ret = (ELEMENT_TYPE *) lookup(parser, &dtd->elementTypes, name, sizeof(ELEMENT_TYPE)); ++ ret = (XMLPARSE_ELEMENT_TYPE *) lookup(parser, &dtd->elementTypes, name, sizeof(XMLPARSE_ELEMENT_TYPE)); + if (!ret) + return NULL; + if (ret->name != name)