From eb00f2e37ee6e6a04e3dba973bc930223bea9747 Mon Sep 17 00:00:00 2001 From: Jerome Duval Date: Mon, 24 May 2021 20:59:30 +0200 Subject: gcc2 build fix diff --git a/examples/elements.c b/examples/elements.c index e5fb850..bf227b5 100644 --- a/examples/elements.c +++ b/examples/elements.c @@ -96,6 +96,7 @@ main(void) { return 1; } +{ const size_t len = fread(buf, 1, BUFSIZ, stdin); if (ferror(stdin)) { @@ -114,6 +115,7 @@ main(void) { XML_ParserFree(parser); return 1; } +} } while (! done); XML_ParserFree(parser); diff --git a/examples/outline.c b/examples/outline.c index d2df914..641ffc1 100644 --- a/examples/outline.c +++ b/examples/outline.c @@ -99,6 +99,7 @@ main(void) { return 1; } +{ const size_t len = fread(buf, 1, BUFSIZ, stdin); if (ferror(stdin)) { @@ -117,6 +118,7 @@ main(void) { XML_ParserFree(parser); return 1; } +} } while (! done); XML_ParserFree(parser); diff --git a/lib/xmlparse.c b/lib/xmlparse.c index b6c2eca..e8eec94 100644 --- a/lib/xmlparse.c +++ b/lib/xmlparse.c @@ -720,7 +720,8 @@ XML_ParserCreate(const XML_Char *encodingName) { XML_Parser XMLCALL XML_ParserCreateNS(const XML_Char *encodingName, XML_Char nsSep) { - XML_Char tmp[2] = {nsSep, 0}; + XML_Char tmp[2] = {0, 0}; + tmp[0] = nsSep; return XML_ParserCreate_MM(encodingName, NULL, tmp); } @@ -1354,7 +1355,8 @@ XML_ExternalEntityParserCreate(XML_Parser oldParser, const XML_Char *context, would be otherwise. */ if (parser->m_ns) { - XML_Char tmp[2] = {parser->m_namespaceSeparator, 0}; + XML_Char tmp[2] = {0, 0}; + tmp[0] = parser->m_namespaceSeparator; parser = parserCreate(encodingName, &parser->m_mem, tmp, newDtd); } else { parser = parserCreate(encodingName, &parser->m_mem, NULL, newDtd); @@ -3475,7 +3477,7 @@ storeAtts(XML_Parser parser, const ENCODING *enc, const char *attStr, if (parser->m_nsAttsPower >= sizeof(unsigned int) * 8 /* bits per byte */) { return XML_ERROR_NO_MEMORY; } - +{ unsigned int nsAttsSize = 1u << parser->m_nsAttsPower; unsigned char oldNsAttsPower = parser->m_nsAttsPower; /* size of hash table must be at least 2 * (# of prefixed attributes) */ @@ -3632,6 +3634,7 @@ storeAtts(XML_Parser parser, const ENCODING *enc, const char *attStr, } else /* not prefixed */ ((XML_Char *)s)[-1] = 0; /* clear flag */ } + } } /* clear flags for the remaining attributes */ for (; i < attIndex; i += 2) @@ -3936,13 +3939,14 @@ addBinding(XML_Parser parser, PREFIX *prefix, const ATTRIBUTE_ID *attId, return XML_ERROR_NO_MEMORY; } #endif - +{ XML_Char *temp = (XML_Char *)REALLOC( parser, b->uri, sizeof(XML_Char) * (len + EXPAND_SPARE)); if (temp == NULL) return XML_ERROR_NO_MEMORY; b->uri = temp; b->uriAlloc = len + EXPAND_SPARE; +} } parser->m_freeBindingList = b->nextTagBinding; } else { @@ -5294,7 +5298,7 @@ doProlog(XML_Parser parser, const ENCODING *enc, const char *s, const char *end, if (parser->m_groupSize > (unsigned int)(-1) / 2u) { return XML_ERROR_NO_MEMORY; } - +{ char *const new_connector = (char *)REALLOC( parser, parser->m_groupConnector, parser->m_groupSize *= 2); if (new_connector == NULL) { @@ -5302,6 +5306,7 @@ doProlog(XML_Parser parser, const ENCODING *enc, const char *s, const char *end, return XML_ERROR_NO_MEMORY; } parser->m_groupConnector = new_connector; +} } if (dtd->scaffIndex) { @@ -5314,12 +5319,13 @@ doProlog(XML_Parser parser, const ENCODING *enc, const char *s, const char *end, return XML_ERROR_NO_MEMORY; } #endif - +{ int *const new_scaff_index = (int *)REALLOC( parser, dtd->scaffIndex, parser->m_groupSize * sizeof(int)); if (new_scaff_index == NULL) return XML_ERROR_NO_MEMORY; dtd->scaffIndex = new_scaff_index; +} } } else { parser->m_groupConnector @@ -6409,7 +6415,7 @@ defineAttribute(ELEMENT_TYPE *type, ATTRIBUTE_ID *attId, XML_Bool isCdata, if (type->allocDefaultAtts > INT_MAX / 2) { return 0; } - +{ int count = type->allocDefaultAtts * 2; /* Detect and prevent integer overflow. @@ -6428,7 +6434,8 @@ defineAttribute(ELEMENT_TYPE *type, ATTRIBUTE_ID *attId, XML_Bool isCdata, return 0; type->allocDefaultAtts = count; type->defaultAtts = temp; - } +} + } } att = type->defaultAtts + type->nDefaultAtts; att->id = attId; @@ -7077,7 +7084,7 @@ lookup(XML_Parser parser, HASH_TABLE *table, KEY name, size_t createSize) { if (newPower >= sizeof(unsigned long) * 8 /* bits per byte */) { return NULL; } - +{ size_t newSize = (size_t)1 << newPower; unsigned long newMask = (unsigned long)newSize - 1; @@ -7086,6 +7093,7 @@ lookup(XML_Parser parser, HASH_TABLE *table, KEY name, size_t createSize) { return NULL; } +{ size_t tsize = newSize * sizeof(NAMED *); NAMED **newV = table->mem->malloc_fcn(tsize); if (! newV) @@ -7115,6 +7123,8 @@ lookup(XML_Parser parser, HASH_TABLE *table, KEY name, size_t createSize) { i < step ? (i += newSize - step) : (i -= step); } } +} + } } table->v[i] = table->mem->malloc_fcn(createSize); if (! table->v[i]) @@ -7506,11 +7516,12 @@ build_model(XML_Parser parser) { > (size_t)(-1) - dtd->contentStringLen * sizeof(XML_Char)) { return NULL; } - +{ const size_t allocsize = (dtd->scaffCount * sizeof(XML_Content) + (dtd->contentStringLen * sizeof(XML_Char))); ret = (XML_Content *)MALLOC(parser, allocsize); +} if (! ret) return NULL; @@ -7563,6 +7574,7 @@ build_model(XML_Parser parser) { * * - The algorithm repeats until all target array indices have been processed. */ +{ XML_Content *dest = ret; /* tree node writing location, moves upwards */ XML_Content *const destLimit = &ret[dtd->scaffCount]; XML_Content *jobDest = ret; /* next free writing location in target array */ @@ -7603,7 +7615,7 @@ build_model(XML_Parser parser) { (jobDest++)->numchildren = (unsigned int)cn; } } - +} return ret; } @@ -7675,7 +7687,7 @@ accountingReportStats(XML_Parser originParser, const char *epilog) { if (rootParser->m_accounting.debugLevel < 1) { return; } - +{ const float amplificationFactor = accountingGetCurrentAmplification(rootParser); fprintf(stderr, @@ -7685,6 +7697,7 @@ accountingReportStats(XML_Parser originParser, const char *epilog) { rootParser->m_accounting.countBytesIndirect, (double)amplificationFactor, epilog); } +} static void accountingOnAbort(XML_Parser originParser) { @@ -7703,6 +7716,7 @@ accountingReportDiff(XML_Parser rootParser, bytesMore, (account == XML_ACCOUNT_DIRECT) ? "DIR" : "EXP", levelsAwayFromRootParser, source_line, 10, ""); +{ const char ellipis[] = "[..]"; const size_t ellipsisLength = sizeof(ellipis) /* because compile-time */ - 1; const unsigned int contextLength = 10; @@ -7727,6 +7741,7 @@ accountingReportDiff(XML_Parser rootParser, } fprintf(stderr, "\"\n"); } +} static XML_Bool accountingDiffTolerated(XML_Parser originParser, int tok, const char *before, @@ -7745,12 +7760,13 @@ accountingDiffTolerated(XML_Parser originParser, int tok, const char *before, if (account == XML_ACCOUNT_NONE) return XML_TRUE; /* because these bytes have been accounted for, already */ - +{ unsigned int levelsAwayFromRootParser; const XML_Parser rootParser = getRootParserOf(originParser, &levelsAwayFromRootParser); assert(! rootParser->m_parentParser); +{ const int isDirect = (account == XML_ACCOUNT_DIRECT) && (originParser == rootParser); const ptrdiff_t bytesMore = after - before; @@ -7763,7 +7779,7 @@ accountingDiffTolerated(XML_Parser originParser, int tok, const char *before, if (*additionTarget > (XmlBigCount)(-1) - (XmlBigCount)bytesMore) return XML_FALSE; *additionTarget += bytesMore; - +{ const XmlBigCount countBytesOutput = rootParser->m_accounting.countBytesDirect + rootParser->m_accounting.countBytesIndirect; @@ -7782,6 +7798,9 @@ accountingDiffTolerated(XML_Parser originParser, int tok, const char *before, return tolerated; } +} +} +} unsigned long long testingAccountingGetCountBytesDirect(XML_Parser parser) { @@ -7804,6 +7823,7 @@ entityTrackingReportStats(XML_Parser rootParser, ENTITY *entity, if (rootParser->m_entity_stats.debugLevel < 1) return; +{ # if defined(XML_UNICODE) const char *const entityName = "[..]"; # else @@ -7820,6 +7840,7 @@ entityTrackingReportStats(XML_Parser rootParser, ENTITY *entity, entity->is_param ? "%" : "&", entityName, action, entity->textLen, sourceLine); } +} static void entityTrackingOnOpen(XML_Parser originParser, ENTITY *entity, int sourceLine) { @@ -8390,9 +8411,11 @@ getDebugLevel(const char *variableName, unsigned long defaultDebugLevel) { if (valueOrNull == NULL) { return defaultDebugLevel; } +{ const char *const value = valueOrNull; errno = 0; +{ char *afterValue = (char *)value; unsigned long debugLevel = strtoul(value, &afterValue, 10); if ((errno != 0) || (afterValue[0] != '\0')) { @@ -8402,3 +8425,5 @@ getDebugLevel(const char *variableName, unsigned long defaultDebugLevel) { return debugLevel; } +} +} diff --git a/xmlwf/xmlwf.c b/xmlwf/xmlwf.c index 471f2a2..6b8e7c5 100644 --- a/xmlwf/xmlwf.c +++ b/xmlwf/xmlwf.c @@ -1051,6 +1051,7 @@ tmain(int argc, XML_Char **argv) { XMLWF_SHIFT_ARG_INTO(valueText, argc, argv, i, j); errno = 0; +{ XML_Char *afterValueText = (XML_Char *)valueText; attackMaximumAmplification = tcstof(valueText, &afterValueText); if ((errno != 0) || (afterValueText[0] != T('\0')) @@ -1067,12 +1068,14 @@ tmain(int argc, XML_Char **argv) { ", xmlwf has been compiled without DTD support.\n")); #endif break; +} } case T('b'): { const XML_Char *valueText = NULL; XMLWF_SHIFT_ARG_INTO(valueText, argc, argv, i, j); errno = 0; +{ XML_Char *afterValueText = (XML_Char *)valueText; attackThresholdBytes = tcstoull(valueText, &afterValueText, 10); if ((errno != 0) || (afterValueText[0] != T('\0'))) { @@ -1089,6 +1092,7 @@ tmain(int argc, XML_Char **argv) { #endif break; } + } case T('\0'): if (j > 1) { i++; -- 2.42.1 From be034c86cf04b527cc8c42579752feb7077bb8a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Revol?= Date: Sat, 2 Dec 2023 02:02:15 +0100 Subject: Fix INTERFACE_INCLUDE_DIRECTORIES on Haiku Not sure if the IMPORTED_LOCATION shouldn't be develop/lib diff --git a/Makefile.am b/Makefile.am index 37ae373..9a10a2d 100644 --- a/Makefile.am +++ b/Makefile.am @@ -67,6 +67,7 @@ cmakedir = $(libdir)/cmake/expat-@PACKAGE_VERSION@ _EXTRA_DIST_CMAKE = \ + cmake/autotools/expat-noconfig__haiku.cmake.in \ cmake/autotools/expat-noconfig__linux.cmake.in \ cmake/autotools/expat-noconfig__macos.cmake.in \ cmake/autotools/expat-noconfig__windows.cmake.in \ diff --git a/cmake/autotools/expat-noconfig__haiku.cmake.in b/cmake/autotools/expat-noconfig__haiku.cmake.in new file mode 100644 index 0000000..c1aad9d --- /dev/null +++ b/cmake/autotools/expat-noconfig__haiku.cmake.in @@ -0,0 +1,26 @@ +#---------------------------------------------------------------- +# Generated CMake target import file for configuration "NoConfig". +#---------------------------------------------------------------- + +# Commands may need to know the format version. +set(CMAKE_IMPORT_FILE_VERSION 1) + +get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) + +set_target_properties(expat::expat PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/develop/headers${CMAKE_HAIKU_SECONDARY_ARCH_SUBDIR}" + INTERFACE_LINK_LIBRARIES "m" +) + +# Import target "expat::expat" for configuration "NoConfig" +set_property(TARGET expat::expat APPEND PROPERTY IMPORTED_CONFIGURATIONS NOCONFIG) +set_target_properties(expat::expat PROPERTIES + IMPORTED_LOCATION_NOCONFIG "${_IMPORT_PREFIX}/lib/@LIBDIR_BASENAME@/libexpat.so.@SO_MAJOR@.@SO_MINOR@.@SO_PATCH@" + IMPORTED_SONAME_NOCONFIG "libexpat.so.@SO_MAJOR@" + ) + +list(APPEND _cmake_import_check_targets expat::expat ) +list(APPEND _cmake_import_check_files_for_expat::expat "${_IMPORT_PREFIX}/lib/@LIBDIR_BASENAME@/libexpat.so.@SO_MAJOR@.@SO_MINOR@.@SO_PATCH@" ) + +# Commands beyond this point should not need to know the version. +set(CMAKE_IMPORT_FILE_VERSION) diff --git a/configure.ac b/configure.ac index d3642de..8ac1f4d 100644 --- a/configure.ac +++ b/configure.ac @@ -410,6 +410,7 @@ AC_SUBST([CMAKE_SHARED_LIBRARY_PREFIX]) AS_CASE("${host_os}", [darwin*], [CMAKE_NOCONFIG_SOURCE=cmake/autotools/expat-noconfig__macos.cmake.in], [mingw*|cygwin*], [CMAKE_NOCONFIG_SOURCE=cmake/autotools/expat-noconfig__windows.cmake.in], + [haiku*], [CMAKE_NOCONFIG_SOURCE=cmake/autotools/expat-noconfig__haiku.cmake.in], [CMAKE_NOCONFIG_SOURCE=cmake/autotools/expat-noconfig__linux.cmake.in]) AC_CONFIG_FILES([Makefile] [expat.pc] -- 2.42.1