author | Andreas Radke
<andyrtr@archlinux.org> 2022-02-02 22:35:05 UTC |
committer | Andreas Radke
<andyrtr@archlinux.org> 2022-02-02 22:35:05 UTC |
parent | 0ebc177f0f0a9353196c7fe686b4af85bf24dbe0 |
PKGBUILD | +12 | -13 |
mdds-2.0-and-orcus-0.17.diff | +4996 | -0 |
diff --git a/PKGBUILD b/PKGBUILD index d3cd046..633eea6 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -12,7 +12,7 @@ pkgbase=libreoffice-still pkgname=('libreoffice-still-sdk' 'libreoffice-still') _LOver=7.2.5.2 pkgver=7.2.5 -pkgrel=1 +pkgrel=2 arch=('x86_64') license=('LGPL3') url="https://www.libreoffice.org/" @@ -25,9 +25,9 @@ makedepends=('curl>=7.20.0' 'hunspell>=1.2.8' 'python>=3.7' 'libwpd>=0.9.2' 'lib 'sane' 'perl-archive-zip' 'zip' 'unzip' 'unixodbc' 'ant' 'gperf' 'gtk3' 'qt5-base' 'plasma-framework' 'cppunit' 'beanshell' 'clucene' 'junit' 'libmythes' 'libwpg' 'java-environment=11' 'postgresql-libs' 'mariadb-libs' 'libgl' - 'bluez-libs' 'gdb' 'doxygen' 'libatomic_ops' #'mdds' + 'bluez-libs' 'gdb' 'doxygen' 'libatomic_ops' 'mdds' 'apr' 'serf' 'ttf-liberation' 'ttf-dejavu' 'ttf-carlito' 'libxinerama' 'libpagemaker' 'glm' - 'libabw' 'libmwaw' 'libe-book' 'coin-or-mp' 'liblangtag' # 'liborcus' + 'libabw' 'libmwaw' 'libe-book' 'coin-or-mp' 'liblangtag' 'liborcus' # 'libexttextcat' 'libcmis' 'gobject-introspection' # 'libfbclient' 'libexttextcat' 'gobject-introspection' # 'libfbclient' 'libtommath' 'libzmf' 'gpgme' 'xmlsec' 'rxvt-unicode' @@ -55,13 +55,12 @@ source=(${_mirror}/libreoffice{,-help,-translations}-${_LOver}.tar.xz{,.asc} ${_additional_source_url}/zxing-cpp-1.1.1.tar.gz ${_additional_source_url}/skia-m90-45c57e116ee0ce214bdf78405a4762722e4507d9.tar.xz ${_additional_source_url}/libcmis-0.5.2.tar.xz - ${_additional_source_url}/liborcus-0.16.1.tar.bz2 - ${_additional_source_url}/mdds-1.7.0.tar.bz2 ${_additional_source_url2}/8249374c274932a21846fa7629c2aa9b-officeotron-0.7.4-master.jar # for test suite ${_additional_source_url2}/odfvalidator-1.2.0-incubating-SNAPSHOT-jar-with-dependencies-971c54fd38a968f5860014b44301872706f9e540.jar # for test suite ${_additional_source_url2}/f543e6e2d7275557a839a164941c0a86e5f2c3f2a0042bfc434c88c6dde9e140-opens___.ttf ${_additional_source_url2}/185d60944ea767075d27247c3162b3bc-unowinreg.dll make-pyuno-work-with-system-wide-module-install.diff + mdds-2.0-and-orcus-0.17.diff soffice-template.desktop.in libreoffice-still.sh libreoffice-still.csh) noextract=(35c94d2df8893241173de1d16b6034c0-swingExSrc.zip @@ -79,8 +78,6 @@ noextract=(35c94d2df8893241173de1d16b6034c0-swingExSrc.zip zxing-cpp-1.1.1.tar.gz skia-m90-45c57e116ee0ce214bdf78405a4762722e4507d9.tar.xz libcmis-0.5.2.tar.xz - liborcus-0.16.1.tar.bz2 - mdds-1.7.0.tar.bz2 8249374c274932a21846fa7629c2aa9b-officeotron-0.7.4-master.jar # for test suite odfvalidator-1.2.0-incubating-SNAPSHOT-jar-with-dependencies-971c54fd38a968f5860014b44301872706f9e540.jar # for test suite f543e6e2d7275557a839a164941c0a86e5f2c3f2a0042bfc434c88c6dde9e140-opens___.ttf @@ -108,17 +105,16 @@ sha256sums=('67c1bfb059d433286b0252a915627b33af63bb5f4b6ec9509d13b9dd475512a7' 'e595b3fa2ec320beb0b28f6af56b1141853257c2611686685639cebb3b248c86' 'abe0b94d54edb717c58d74263f4ed3d27824d2ce9e9f2ce85a21ab38d993f94d' 'd7b18d9602190e10d437f8a964a32e983afd57e2db316a07d87477a79f5000a2' - 'c700d1325f744104d9fca0d5a019434901e9d51a16eedfb05792f90a298587a4' - 'a66a2a8293a3abc6cd9baff7c236156e2666935cbfb69a15d64d38141638fecf' 'f2443f27561af52324eee03a1892d9f569adc8db9e7bca55614898bc2a13a770' '984f2a479df79e27e7b01a5815ac53ae64e07746b882262d8a64566494515504' 'f543e6e2d7275557a839a164941c0a86e5f2c3f2a0042bfc434c88c6dde9e140' 'eafde646a7dbe46d20c291685b0beac2382174d78d66ee990e229a1bf6e6cec6' 'c463654a73ecfbc242ff109726fb4faecdbfb3d91affafe919b24bea65afb563' + 'fd73edaa09a48e2b2c4f4f32af68f1ef01cc181d49a5dfc1f65a5ad4883d7db8' 'd0be8099cbee3c9dfda694a828149b881c345b204ab68826f317580aafb50879' 'cd1b25ff390e436c6bffa65c6e12382236e3ccbf8d3aae51b1b59bcaed79fd8a' 'de20f36d45f0fecc2d94176dd3ec7226ab07fa8ffb9b0bc73c200349a9273de1') - + prepare() { cd libreoffice-$_LOver @@ -138,6 +134,9 @@ prepare() { # fix not upstreamable pyuno paths - FS#54250 patch -Np1 -i "${srcdir}"/make-pyuno-work-with-system-wide-module-install.diff + # fix build with current system libixion/liborcus/mdds + patch -Np1 -i "${srcdir}"/mdds-2.0-and-orcus-0.17.diff + #use the CFLAGS but remove the LibO overridden ones for i in $CFLAGS; do case "$i" in @@ -189,13 +188,13 @@ build() { --without-fonts\ --with-system-apr \ --with-system-libcdr \ - --without-system-mdds\ + --with-system-mdds\ --without-myspell-dicts \ --with-system-libvisio \ --without-system-libcmis \ --with-system-libmspub \ --with-system-libexttextcat \ - --without-system-orcus \ + --with-system-orcus \ --with-system-liblangtag \ --with-system-libodfgen \ --with-system-libmwaw \ @@ -288,7 +287,7 @@ package_libreoffice-still() { 'desktop-file-utils' 'shared-mime-info' 'libpagemaker' 'libxinerama' 'libabw' 'libmwaw' 'libe-book' 'libcups' #'liblangtag' 'libexttextcat' 'libcmis' 'liborcus' # 'libfbclient' - 'liblangtag' 'libexttextcat' # 'liborcus' # 'libfbclient' + 'liblangtag' 'libexttextcat' 'liborcus' # 'libfbclient' 'libtommath' 'libzmf' 'libatomic_ops' 'xmlsec' 'gpgme' 'libnumbertext' 'libfreehand' 'libstaroffice' 'libepubgen' 'libqxp' 'libepoxy' 'box2d' 'xdg-utils') diff --git a/mdds-2.0-and-orcus-0.17.diff b/mdds-2.0-and-orcus-0.17.diff new file mode 100644 index 0000000..b599c4c --- /dev/null +++ b/mdds-2.0-and-orcus-0.17.diff @@ -0,0 +1,4996 @@ +From eb07a0e76fe240a184348d96a6cebf7c0a229ac0 Mon Sep 17 00:00:00 2001 +From: Kohei Yoshida <kohei@libreoffice.org> +Date: Mon, 1 Nov 2021 14:01:22 -0400 +Subject: Upgrade mdds and liborcus to 2.0.0 and 0.17.0, respectively. +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Change-Id: I9e856fc2d61f1789a6f1702514837860539a0f49 +Reviewed-on: https://gerrit.libreoffice.org/c/core/+/124573 +Tested-by: Jenkins +Tested-by: René Engelhard <rene@debian.org> +Reviewed-by: Kohei Yoshida <kohei@libreoffice.org> +--- + RepositoryExternal.mk | 4 +- + bin/oss-fuzz-setup.sh | 2 +- + configure.ac | 4 +- + cui/source/dialogs/AdditionsDialog.cxx | 62 +- + download.lst | 8 +- + external/liborcus/ExternalPackage_liborcus.mk | 8 +- + external/liborcus/ExternalProject_liborcus.mk | 4 +- + external/liborcus/Library_orcus-parser.mk | 1 + + external/liborcus/UnpackedTarball_liborcus.mk | 9 +- + external/liborcus/allow-utf-8-in-xml-names.patch | 301 ----- + external/liborcus/boost-filesystem.patch.1 | 41 + + .../liborcus/inc/pch/precompiled_orcus-parser.hxx | 1 - + external/liborcus/inc/pch/precompiled_orcus.hxx | 1 - + external/liborcus/include.patch.0 | 30 - + external/liborcus/remove-unused-parameters.patch.1 | 1209 ++++++++++++++++++++ + external/liborcus/std-get-busted.patch.1 | 418 +++++++ + external/liborcus/unused-variables.patch.1 | 24 + + external/mdds/UnpackedTarball_mdds.mk | 6 +- + external/mdds/Wunused-but-set-variable.patch | 46 - + .../mdds/remove-more-unused-parameters.patch.1 | 42 + + external/mdds/remove-unused-parameters.patch.1 | 93 ++ + sc/inc/mtvelements.hxx | 22 +- + sc/source/filter/inc/orcusinterface.hxx | 50 +- + sc/source/filter/orcus/interface.cxx | 97 +- + sc/source/filter/orcus/orcusfiltersimpl.cxx | 8 +- + sc/source/filter/orcus/xmlcontext.cxx | 10 +- + sfx2/source/control/emojiview.cxx | 11 +- + solenv/flatpak-manifest.in | 12 +- + 28 files changed, 1973 insertions(+), 551 deletions(-) + delete mode 100644 external/liborcus/allow-utf-8-in-xml-names.patch + create mode 100644 external/liborcus/boost-filesystem.patch.1 + delete mode 100644 external/liborcus/include.patch.0 + create mode 100644 external/liborcus/remove-unused-parameters.patch.1 + create mode 100644 external/liborcus/std-get-busted.patch.1 + create mode 100644 external/liborcus/unused-variables.patch.1 + delete mode 100644 external/mdds/Wunused-but-set-variable.patch + create mode 100644 external/mdds/remove-more-unused-parameters.patch.1 + create mode 100644 external/mdds/remove-unused-parameters.patch.1 + +diff --git a/RepositoryExternal.mk b/RepositoryExternal.mk +index c28b049caef8..a2a7212aa837 100644 +--- a/RepositoryExternal.mk ++++ b/RepositoryExternal.mk +@@ -3329,7 +3329,7 @@ $(call gb_LinkTarget_set_include,$(1),\ + ) + + $(call gb_LinkTarget_add_libs,$(1),\ +- -L$(call gb_UnpackedTarball_get_dir,liborcus)/src/liborcus/.libs -lorcus-0.16 \ ++ -L$(call gb_UnpackedTarball_get_dir,liborcus)/src/liborcus/.libs -lorcus-0.17 \ + ) + + $(if $(SYSTEM_BOOST), \ +@@ -3348,7 +3348,7 @@ $(call gb_LinkTarget_set_include,$(1),\ + ) + + $(call gb_LinkTarget_add_libs,$(1),\ +- -L$(call gb_UnpackedTarball_get_dir,liborcus)/src/parser/.libs -lorcus-parser-0.16 \ ++ -L$(call gb_UnpackedTarball_get_dir,liborcus)/src/parser/.libs -lorcus-parser-0.17 \ + ) + + endef +diff --git a/configure.ac b/configure.ac +index b8b3793b6204..a2a831da535a 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -10299,7 +10299,7 @@ AC_SUBST(SYSTEM_BOOST) + dnl =================================================================== + dnl Check for system mdds + dnl =================================================================== +-libo_CHECK_SYSTEM_MODULE([mdds], [MDDS], [mdds-1.5 >= 1.5.0], ["-I${WORKDIR}/UnpackedTarball/mdds/include"]) ++libo_CHECK_SYSTEM_MODULE([mdds], [MDDS], [mdds-2.0 >= 2.0.0], ["-I${WORKDIR}/UnpackedTarball/mdds/include"]) + + dnl =================================================================== + dnl Check for system glm +@@ -10643,7 +10643,7 @@ AC_SUBST(ENABLE_FUZZERS) + dnl =================================================================== + dnl Orcus + dnl =================================================================== +-libo_CHECK_SYSTEM_MODULE([orcus],[ORCUS],[liborcus-0.16 >= 0.16.0]) ++libo_CHECK_SYSTEM_MODULE([orcus],[ORCUS],[liborcus-0.17 >= 0.17.0]) + if test "$with_system_orcus" != "yes"; then + if test "$SYSTEM_BOOST" = "TRUE"; then + # =========================================================== +diff --git a/cui/source/dialogs/AdditionsDialog.cxx b/cui/source/dialogs/AdditionsDialog.cxx +index ac633177ef36..ec173740bc63 100644 +--- a/cui/source/dialogs/AdditionsDialog.cxx ++++ b/cui/source/dialogs/AdditionsDialog.cxx +@@ -54,7 +54,6 @@ + #include <orcus/json_document_tree.hpp> + #include <orcus/json_parser.hpp> + #include <orcus/config.hpp> +-#include <orcus/pstring.hpp> + + #define PAGE_SIZE 30 + +@@ -158,62 +157,37 @@ void parseResponse(const std::string& rResponse, std::vector<AdditionInfo>& aAdd + try + { + AdditionInfo aNewAddition = { +- OStringToOUString(std::string_view(arrayElement.child("id").string_value().get()), ++ OStringToOUString(arrayElement.child("id").string_value(), RTL_TEXTENCODING_UTF8), ++ OStringToOUString(arrayElement.child("name").string_value(), RTL_TEXTENCODING_UTF8), ++ OStringToOUString(arrayElement.child("author").string_value(), + RTL_TEXTENCODING_UTF8), +- OStringToOUString(std::string_view(arrayElement.child("name").string_value().get()), ++ OStringToOUString(arrayElement.child("url").string_value(), RTL_TEXTENCODING_UTF8), ++ OStringToOUString(arrayElement.child("screenshotURL").string_value(), + RTL_TEXTENCODING_UTF8), +- OStringToOUString( +- std::string_view(arrayElement.child("author").string_value().get()), +- RTL_TEXTENCODING_UTF8), +- OStringToOUString(std::string_view(arrayElement.child("url").string_value().get()), ++ OStringToOUString(arrayElement.child("extensionIntroduction").string_value(), ++ RTL_TEXTENCODING_UTF8), ++ OStringToOUString(arrayElement.child("extensionDescription").string_value(), + RTL_TEXTENCODING_UTF8), + OStringToOUString( +- std::string_view(arrayElement.child("screenshotURL").string_value().get()), ++ arrayElement.child("releases").child(0).child("compatibility").string_value(), + RTL_TEXTENCODING_UTF8), + OStringToOUString( +- std::string_view( +- arrayElement.child("extensionIntroduction").string_value().get()), ++ arrayElement.child("releases").child(0).child("releaseName").string_value(), + RTL_TEXTENCODING_UTF8), + OStringToOUString( +- std::string_view( +- arrayElement.child("extensionDescription").string_value().get()), ++ arrayElement.child("releases").child(0).child("license").string_value(), + RTL_TEXTENCODING_UTF8), +- OStringToOUString(std::string_view(arrayElement.child("releases") +- .child(0) +- .child("compatibility") +- .string_value() +- .get()), ++ OStringToOUString(arrayElement.child("commentNumber").string_value(), + RTL_TEXTENCODING_UTF8), +- OStringToOUString(std::string_view(arrayElement.child("releases") +- .child(0) +- .child("releaseName") +- .string_value() +- .get()), ++ OStringToOUString(arrayElement.child("commentURL").string_value(), + RTL_TEXTENCODING_UTF8), +- OStringToOUString(std::string_view(arrayElement.child("releases") +- .child(0) +- .child("license") +- .string_value() +- .get()), ++ OStringToOUString(arrayElement.child("rating").string_value(), ++ RTL_TEXTENCODING_UTF8), ++ OStringToOUString(arrayElement.child("downloadNumber").string_value(), + RTL_TEXTENCODING_UTF8), + OStringToOUString( +- std::string_view(arrayElement.child("commentNumber").string_value().get()), +- RTL_TEXTENCODING_UTF8), +- OStringToOUString( +- std::string_view(arrayElement.child("commentURL").string_value().get()), +- RTL_TEXTENCODING_UTF8), +- OStringToOUString( +- std::string_view(arrayElement.child("rating").string_value().get()), +- RTL_TEXTENCODING_UTF8), +- OStringToOUString( +- std::string_view(arrayElement.child("downloadNumber").string_value().get()), +- RTL_TEXTENCODING_UTF8), +- OStringToOUString(std::string_view(arrayElement.child("releases") +- .child(0) +- .child("downloadURL") +- .string_value() +- .get()), +- RTL_TEXTENCODING_UTF8) ++ arrayElement.child("releases").child(0).child("downloadURL").string_value(), ++ RTL_TEXTENCODING_UTF8) + }; + + aAdditions.push_back(aNewAddition); +diff --git a/download.lst b/download.lst +index 561d4e5f5908..fc95d14dcc95 100644 +--- a/download.lst ++++ b/download.lst +@@ -178,8 +178,8 @@ export LXML_SHA256SUM := 940caef1ec7c78e0c34b0f6b94fe42d0f2022915ffc78643d28538a + export LXML_TARBALL := lxml-4.1.1.tgz + export MARIADB_CONNECTOR_C_SHA256SUM := 431434d3926f4bcce2e5c97240609983f60d7ff50df5a72083934759bb863f7b + export MARIADB_CONNECTOR_C_TARBALL := mariadb-connector-c-3.1.8-src.tar.gz +-export MDDS_SHA256SUM := a66a2a8293a3abc6cd9baff7c236156e2666935cbfb69a15d64d38141638fecf +-export MDDS_TARBALL := mdds-1.7.0.tar.bz2 ++export MDDS_SHA256SUM := 5a0fb2dd88a6420e0a69ec4c7259bcd1fe8f4a80b232c150e11f3da4c68236d7 ++export MDDS_TARBALL := mdds-2.0.0.tar.bz2 + export MDNSRESPONDER_SHA256SUM := e777b4d7dbf5eb1552cb80090ad1ede319067ab6e45e3990d68aabf6e8b3f5a0 + export MDNSRESPONDER_TARBALL := mDNSResponder-878.200.35.tar.gz + export MSPUB_SHA256SUM := ef36c1a1aabb2ba3b0bedaaafe717bf4480be2ba8de6f3894be5fd3702b013ba +@@ -204,8 +204,8 @@ export OPENLDAP_SHA256SUM := cdd6cffdebcd95161a73305ec13fc7a78e9707b46ca9f84fb89 + export OPENLDAP_TARBALL := openldap-2.4.59.tgz + export OPENSSL_SHA256SUM := 0b7a3e5e59c34827fe0c3a74b7ec8baef302b98fa80088d7f9153aa16fa76bd1 + export OPENSSL_TARBALL := openssl-1.1.1l.tar.gz +-export ORCUS_SHA256SUM := c700d1325f744104d9fca0d5a019434901e9d51a16eedfb05792f90a298587a4 +-export ORCUS_TARBALL := liborcus-0.16.1.tar.bz2 ++export ORCUS_SHA256SUM := 2ef9d2b5ee374c683cf631b78356b110510ab895788a68d778e225d8c4176d1b ++export ORCUS_TARBALL := liborcus-0.17.0.tar.bz2 + export PAGEMAKER_SHA256SUM := 66adacd705a7d19895e08eac46d1e851332adf2e736c566bef1164e7a442519d + export PAGEMAKER_TARBALL := libpagemaker-0.0.4.tar.xz + export PDFIUM_SHA256SUM := 26a03dd60e5ed0979cdaba9cc848242895110ddfdf347d40989ce2f14020f304 +diff --git a/external/liborcus/ExternalPackage_liborcus.mk b/external/liborcus/ExternalPackage_liborcus.mk +index 747691809d2e..13d61a8fecbd 100644 +--- a/external/liborcus/ExternalPackage_liborcus.mk ++++ b/external/liborcus/ExternalPackage_liborcus.mk +@@ -12,11 +12,11 @@ $(eval $(call gb_ExternalPackage_ExternalPackage,liborcus,liborcus)) + $(eval $(call gb_ExternalPackage_use_external_project,liborcus,liborcus)) + + ifeq ($(OS),MACOSX) +-$(eval $(call gb_ExternalPackage_add_file,liborcus,$(LIBO_LIB_FOLDER)/liborcus-0.16.0.dylib,src/liborcus/.libs/liborcus-0.16.0.dylib)) +-$(eval $(call gb_ExternalPackage_add_file,liborcus,$(LIBO_LIB_FOLDER)/liborcus-parser-0.16.0.dylib,src/parser/.libs/liborcus-parser-0.16.0.dylib)) ++$(eval $(call gb_ExternalPackage_add_file,liborcus,$(LIBO_LIB_FOLDER)/liborcus-0.17.0.dylib,src/liborcus/.libs/liborcus-0.17.0.dylib)) ++$(eval $(call gb_ExternalPackage_add_file,liborcus,$(LIBO_LIB_FOLDER)/liborcus-parser-0.17.0.dylib,src/parser/.libs/liborcus-parser-0.17.0.dylib)) + else ifeq ($(DISABLE_DYNLOADING),) +-$(eval $(call gb_ExternalPackage_add_file,liborcus,$(LIBO_LIB_FOLDER)/liborcus-0.16.so.0,src/liborcus/.libs/liborcus-0.16.so.0.0.0)) +-$(eval $(call gb_ExternalPackage_add_file,liborcus,$(LIBO_LIB_FOLDER)/liborcus-parser-0.16.so.0,src/parser/.libs/liborcus-parser-0.16.so.0.0.0)) ++$(eval $(call gb_ExternalPackage_add_file,liborcus,$(LIBO_LIB_FOLDER)/liborcus-0.17.so.0,src/liborcus/.libs/liborcus-0.17.so.0.0.0)) ++$(eval $(call gb_ExternalPackage_add_file,liborcus,$(LIBO_LIB_FOLDER)/liborcus-parser-0.17.so.0,src/parser/.libs/liborcus-parser-0.17.so.0.0.0)) + endif + + # vim: set noet sw=4 ts=4: +diff --git a/external/liborcus/ExternalProject_liborcus.mk b/external/liborcus/ExternalProject_liborcus.mk +index c7dd76ebfee5..76a2a6afb1f2 100644 +--- a/external/liborcus/ExternalProject_liborcus.mk ++++ b/external/liborcus/ExternalProject_liborcus.mk +@@ -123,8 +123,8 @@ $(call gb_ExternalProject_get_state_target,liborcus,build) : + $(MAKE) \ + $(if $(filter MACOSX,$(OS)),\ + && $(PERL) $(SRCDIR)/solenv/bin/macosx-change-install-names.pl shl OOO \ +- $(EXTERNAL_WORKDIR)/src/liborcus/.libs/liborcus-0.16.0.dylib \ +- $(EXTERNAL_WORKDIR)/src/parser/.libs/liborcus-parser-0.16.0.dylib \ ++ $(EXTERNAL_WORKDIR)/src/liborcus/.libs/liborcus-0.17.0.dylib \ ++ $(EXTERNAL_WORKDIR)/src/parser/.libs/liborcus-parser-0.17.0.dylib \ + ) \ + ) + $(call gb_Trace_EndRange,liborcus,EXTERNAL) +diff --git a/external/liborcus/Library_orcus-parser.mk b/external/liborcus/Library_orcus-parser.mk +index 4e46591b98fe..f26657756273 100644 +--- a/external/liborcus/Library_orcus-parser.mk ++++ b/external/liborcus/Library_orcus-parser.mk +@@ -62,6 +62,7 @@ $(eval $(call gb_Library_add_generated_exception_objects,orcus-parser,\ + UnpackedTarball/liborcus/src/parser/string_pool \ + UnpackedTarball/liborcus/src/parser/tokens \ + UnpackedTarball/liborcus/src/parser/types \ ++ UnpackedTarball/liborcus/src/parser/utf8 \ + UnpackedTarball/liborcus/src/parser/xml_namespace \ + UnpackedTarball/liborcus/src/parser/xml_writer \ + UnpackedTarball/liborcus/src/parser/yaml_parser_base \ +diff --git a/external/liborcus/UnpackedTarball_liborcus.mk b/external/liborcus/UnpackedTarball_liborcus.mk +index 710d126a8c17..3d2cec42e55e 100644 +--- a/external/liborcus/UnpackedTarball_liborcus.mk ++++ b/external/liborcus/UnpackedTarball_liborcus.mk +@@ -20,12 +20,11 @@ $(eval $(call gb_UnpackedTarball_add_patches,liborcus,\ + external/liborcus/gcc9.patch.0 \ + external/liborcus/libtool.patch.0 \ + external/liborcus/fix-pch.patch.0 \ +- external/liborcus/include.patch.0 \ + external/liborcus/liborcus_newline.patch.1 \ +-)) +- +-$(eval $(call gb_UnpackedTarball_add_patches,liborcus,\ +- external/liborcus/allow-utf-8-in-xml-names.patch \ ++ external/liborcus/remove-unused-parameters.patch.1 \ ++ external/liborcus/unused-variables.patch.1 \ ++ external/liborcus/boost-filesystem.patch.1 \ ++ external/liborcus/std-get-busted.patch.1 \ + )) + + ifeq ($(OS),WNT) +diff --git a/external/liborcus/allow-utf-8-in-xml-names.patch b/external/liborcus/allow-utf-8-in-xml-names.patch +deleted file mode 100644 +index e3430881053d..000000000000 +--- a/external/liborcus/allow-utf-8-in-xml-names.patch ++++ /dev/null +@@ -1,301 +0,0 @@ +-From fa9b6845ed583f5486372c6ffbc59e02a140d303 Mon Sep 17 00:00:00 2001 +-From: =?UTF-8?q?Lubo=C5=A1=20Lu=C5=88=C3=A1k?= <l.lunak@centrum.cz> +-Date: Thu, 29 Apr 2021 19:12:20 +0200 +-Subject: [PATCH] allow utf-8 in xml names (#137) +- +-https://www.w3.org/TR/2006/REC-xml11-20060816/#NT-NameStartChar +-has a list of all allowed characters. +---- +- include/orcus/sax_parser_base.hpp | 3 + +- src/orcus_test_xml.cpp | 1 + +- src/parser/sax_parser_base.cpp | 201 ++++++++++++++++++++++++++++-- +- test/xml/non-ascii/check.txt | 4 + +- test/xml/non-ascii/input.xml | 4 + +- 5 files changed, 201 insertions(+), 12 deletions(-) +- create mode 100644 test/xml/non-ascii/check.txt +- create mode 100644 test/xml/non-ascii/input.xml +- +-diff --git a/include/orcus/sax_parser_base.hpp b/include/orcus/sax_parser_base.hpp +-index 9939e133..8394c07b 100644 +---- a/include/orcus/sax_parser_base.hpp +-+++ b/include/orcus/sax_parser_base.hpp +-@@ -218,6 +218,9 @@ protected: +- void element_name(parser_element& elem, std::ptrdiff_t begin_pos); +- void attribute_name(pstring& attr_ns, pstring& attr_name); +- void characters_with_encoded_char(cell_buffer& buf); +-+ +-+ int is_name_char(); +-+ int is_name_start_char(); +- }; +- +- }} +-diff --git a/src/orcus_test_xml.cpp b/src/orcus_test_xml.cpp +-index 8a864d68..35f3dea7 100644 +---- a/src/orcus_test_xml.cpp +-+++ b/src/orcus_test_xml.cpp +-@@ -77,6 +77,7 @@ const char* sax_parser_test_dirs[] = { +- SRCDIR"/test/xml/no-decl-1/", +- SRCDIR"/test/xml/underscore-identifier/", +- SRCDIR"/test/xml/self-closing-root/", +-+ SRCDIR"/test/xml/non-ascii/", +- }; +- +- const char* sax_parser_parse_only_test_dirs[] = { +-diff --git a/src/parser/sax_parser_base.cpp b/src/parser/sax_parser_base.cpp +-index 97aa34ec..db51ff94 100644 +---- a/src/parser/sax_parser_base.cpp +-+++ b/src/parser/sax_parser_base.cpp +-@@ -328,20 +328,182 @@ bool parser_base::value(pstring& str, bool decode) +- return transient_stream(); +- } +- +-+// https://www.w3.org/TR/2006/REC-xml11-20060816/#NT-NameStartChar +-+// Return length of the character in bytes, otherwise 0. +-+template< bool only_start_name > +-+static +-+int is_name_char_helper(const char* mp_char, const char* mp_end) +-+{ +-+ const unsigned char first = mp_char[0]; +-+ // Note that ':' technically is an allowed name character, but it is handled separately +-+ // e.g. in element_name(), so here pretend it isn't. +-+ if (/*first == ':' ||*/ first == '_' || (first >= 'A' && first <= 'Z') || (first >= 'a' && first <= 'z')) +-+ return 1; +-+ if (!only_start_name && (first == '-' || first == '.' || (first >= '0' && first <= '9'))) +-+ return 1; +-+ +-+ if (first < 0x7f) // other ascii characters are not allowed +-+ return 0; +-+ if (mp_end < mp_char + 1) +-+ return 0; +-+ const unsigned char second = mp_char[1]; +-+ +-+ // 0xb7 = 0xc2 0xb7 utf-8 +-+ if (!only_start_name && first == 0xc2 && second == 0xb7) +-+ return 2; +-+ +-+ // [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] +-+ // 0xc0 = 0xc3 0x80 utf-8 +-+ if (first < 0xc3) +-+ return 0; +-+ // xd7 = 0xc3 0x97 utf-8, 0xf7 = 0xc3 0xb7 utf-8 +-+ if (first == 0xc3) +-+ return second >= 0x80 && second <= 0xff && second != 0x97 && second != 0xb7 ? 2 : 0; +-+ // 0x2ff = 0xcb 0xbf utf-8, 0x300 = 0xcc 0x80 utf-8 +-+ if (first >= 0xc4 && first <= 0xcb) +-+ return 2; +-+ +-+ // [#x0300-#x036F] +-+ // 0x0300 = 0xcc 0x80 utf-8, 0x36f = 0xcd 0xaf utf-8 +-+ if (!only_start_name && first == 0xcc) +-+ return 2; +-+ if (!only_start_name && first == 0xcd && second <= 0xaf) +-+ return 2; +-+ +-+ // [#x370-#x37D] | [#x37F-#x1FFF] +-+ // 0x370 = 0xcd 0xb0 utf-8, 0x37e = 0xcd 0xbe +-+ if (first < 0xcd) +-+ return 0; +-+ if (first == 0xcd) +-+ return second >= 0xb0 && second != 0xbe ? 2 : 0; +-+ // 0x07ff = 0xdf 0xbf utf-8 (the last 2-byte utf-8) +-+ if (first <= 0xdf) +-+ return 2; +-+ +-+ if (first < 0xe0) +-+ return 0; +-+ if (mp_end < mp_char + 2) +-+ return 0; +-+ const unsigned char third = mp_char[2]; +-+ +-+ // 0x0800 = 0xe0 0xa0 0x80 utf-8, 0x1fff = 0xe1 0xbf 0xbf utf-8, 0x2000 = 0xe2 0x80 0x80 +-+ if (first == 0xe0 || first == 0xe1) +-+ return 3; +-+ +-+ // [#x200C-#x200D] +-+ // 0x200c = 0xe2 0x80 0x8c utf-8, 0x200d = 0xe2 0x80 0x8d utf-8 +-+ if (first < 0xe2) +-+ return 0; +-+ if (first == 0xe2 && second == 0x80 && (third == 0x8c || third == 0x8d)) +-+ return 3; +-+ +-+ // [#x203F-#x2040] +-+ // 0x203f = 0xe2 0x80 0xbf utf-8, 0x2040 = 0xe2 0x81 0x80 utf-8 +-+ if (!only_start_name && first == 0xe2 && second == 0x80 && third == 0xbf) +-+ return 3; +-+ if (!only_start_name && first == 0xe2 && second == 0x81 && third == 0x80) +-+ return 3; +-+ +-+ // [#x2070-#x218F] +-+ // 0x2070 = 0xe2 0x81 0xb0 utf-8, 0x218f = 0xe2 0x86 0x8f utf-8 +-+ if (first == 0xe2) +-+ { +-+ if (second < 0x81) +-+ return 0; +-+ if (second >= 0x81 && second < 0x86) +-+ return 3; +-+ if (second == 0x86 && third <= 0x8f) +-+ return 3; +-+ } +-+ +-+ // [#x2C00-#x2FEF] +-+ // 0x2c00 = 0xe2 0xb0 0x80 utf-8, 0x2fef = 0xe2 0xbf 0xaf utf-8 +-+ if (first == 0xe2) +-+ { +-+ if (second < 0xb0) +-+ return 0; +-+ if (second < 0xbf) +-+ return 3; +-+ if (second == 0xbf && third <= 0xaf) +-+ return 3; +-+ } +-+ +-+ // [#x3001-#xD7FF] +-+ // 0x3001 = 0xe3 0x80 0x81 utf-8, 0xd7ff = 0xed 0x9f 0xbf utf-8, 0xd800 = 0xed 0xa0 0x80 utf-8 +-+ if (first < 0xe3) +-+ return 0; +-+ if (first < 0xed) +-+ return 3; +-+ if (first == 0xed && second <= 0x9f) +-+ return 3; +-+ +-+ // [#xF900-#xFDCF] +-+ // 0xf900 = 0xef 0xa4 0x80 utf-8, 0xfdcf = 0xef 0xb7 0x8f utf-8 +-+ if (first == 0xef) +-+ { +-+ if (second < 0xa4) +-+ return 0; +-+ if (second < 0xb7) +-+ return 3; +-+ if (second == 0xb7 && third <= 0x8f) +-+ return 3; +-+ } +-+ +-+ // [#xFDF0-#xFFFD] +-+ // 0xfdf0 = 0xef 0xb7 0xb0 utf-8, 0xfffd = 0xef 0xbf 0xbd utf-8 +-+ if (first == 0xef) +-+ { +-+ assert(second >= 0xb7); +-+ if (second == 0xb7 && third < 0xb0) +-+ return 0; +-+ if (second < 0xbe) +-+ return 3; +-+ if (second == 0xbf && third <= 0xbd) +-+ return 3; +-+ } +-+ +-+ if (first < 0xf0) +-+ return 0; +-+ if (mp_end < mp_char + 3) +-+ return 0; +-+ // const unsigned char fourth = mp_char[3]; +-+ +-+ // [#x10000-#xEFFFF] +-+ // 0x10000 = 0xf0 0x90 0x80 0x80 utf-8, 0xeffff = 0xf3 0xaf 0xbf 0xbf utf-8, +-+ // 0xf0000 = 0xf3 0xb0 0x80 0x80 utf-8 +-+ if (first >= 0xf0 && first < 0xf2) +-+ return 4; +-+ if (first == 0xf3 && second < 0xb0) +-+ return 4; +-+ +-+ return 0; +-+} +-+ +-+int parser_base::is_name_char() +-+{ +-+ return is_name_char_helper<false>(mp_char, mp_end); +-+} +-+ +-+int parser_base::is_name_start_char() +-+{ +-+ return is_name_char_helper<true>(mp_char, mp_end); +-+} +-+ +- void parser_base::name(pstring& str) +- { +- const char* p0 = mp_char; +-- char c = cur_char(); +-- if (!is_alpha(c) && c != '_') +-+ int skip = is_name_start_char(); +-+ if (skip == 0) +- { +- ::std::ostringstream os; +-- os << "name must begin with an alphabet, but got this instead '" << c << "'"; +-+ os << "name must begin with an alphabet, but got this instead '" << cur_char() << "'"; +- throw malformed_xml_error(os.str(), offset()); +- } +-+ next(skip); +- +- #if defined(__ORCUS_CPU_FEATURES) && defined(__SSE4_2__) +- +-- const __m128i match = _mm_loadu_si128((const __m128i*)"azAZ09--__"); +-+ const __m128i match = _mm_loadu_si128((const __m128i*)"azAZ09--__.."); +- const int mode = _SIDD_LEAST_SIGNIFICANT | _SIDD_CMP_RANGES | _SIDD_UBYTE_OPS | _SIDD_NEGATIVE_POLARITY; +- +- size_t n_total = available_size(); +-@@ -351,20 +513,35 @@ void parser_base::name(pstring& str) +- __m128i char_block = _mm_loadu_si128((const __m128i*)mp_char); +- +- int n = std::min<size_t>(16u, n_total); +-- int r = _mm_cmpestri(match, 10, char_block, n, mode); +-+ int r = _mm_cmpestri(match, 12, char_block, n, mode); +- mp_char += r; // Move the current char position. +-+ n_total -= r; +- +-- if (r < 16) +-- // No need to move to the next segment. Stop here. +-- break; +-+ if (r < 16 && n_total) +-+ { +-+ // There is a character that does not match the SSE-based ASCII-only check. +-+ // It may either by an ascii character that is not allowed, in which case stop, +-+ // or it may possibly be an allowed utf-8 character, in which case move over it +-+ // using the slow function. +-+ skip = is_name_char(); +-+ if(skip == 0) +-+ break; +-+ next(skip); +-+ n_total -= skip; +-+ } +- +-- // Skip 16 chars to the next segment. +-- n_total -= 16; +- } +-+ cur_char_checked(); // check end of xml stream +- +- #else +-- while (is_alpha(c) || is_numeric(c) || is_name_char(c)) +-- c = next_char_checked(); +-+ for(;;) +-+ { +-+ cur_char_checked(); // check end of xml stream +-+ skip = is_name_char(); +-+ if(skip == 0) +-+ break; +-+ next(skip); +-+ } +- #endif +- +- str = pstring(p0, mp_char-p0); +-diff --git a/test/xml/non-ascii/check.txt b/test/xml/non-ascii/check.txt +-new file mode 100644 +-index 00000000..77b7c003 +---- /dev/null +-+++ b/test/xml/non-ascii/check.txt +-@@ -0,0 +1,4 @@ +-+/Myšička +-+/Myšička@jméno="Žužla" +-+/Myšička/Nožičky +-+/Myšička/Nožičky"4" +-diff --git a/test/xml/non-ascii/input.xml b/test/xml/non-ascii/input.xml +-new file mode 100644 +-index 00000000..c516744b +---- /dev/null +-+++ b/test/xml/non-ascii/input.xml +-@@ -0,0 +1,4 @@ +-+<?xml version="1.0" encoding="UTF-8"?> +-+<Myšička jméno="Žužla"> +-+ <Nožičky>4</Nožičky> +-+</Myšička> +--- +-2.26.2 +- +diff --git a/external/liborcus/boost-filesystem.patch.1 b/external/liborcus/boost-filesystem.patch.1 +new file mode 100644 +index 000000000000..14128b4e1c67 +--- /dev/null ++++ b/external/liborcus/boost-filesystem.patch.1 +@@ -0,0 +1,41 @@ ++From e44737bad582fa2a05a23820e49d7930db710412 Mon Sep 17 00:00:00 2001 ++From: Kohei Yoshida <kohei.yoshida@gmail.com> ++Date: Tue, 2 Nov 2021 21:33:19 -0400 ++Subject: [PATCH] Try using boost::filesystem instead of std::filesystem. ++ ++std::filesystem still seems unreliable. ++--- ++ src/parser/stream.cpp | 6 +++--- ++ 1 file changed, 3 insertions(+), 3 deletions(-) ++ ++diff --git a/src/parser/stream.cpp b/src/parser/stream.cpp ++index 09855300..00395f59 100644 ++--- a/src/parser/stream.cpp +++++ b/src/parser/stream.cpp ++@@ -17,12 +17,12 @@ ++ #include <locale> ++ #include <codecvt> ++ #include <iostream> ++-#include <filesystem> ++ +++#include <boost/filesystem.hpp> ++ #include <boost/interprocess/file_mapping.hpp> ++ #include <boost/interprocess/mapped_region.hpp> ++ ++-namespace fs = std::filesystem; +++namespace fs = boost::filesystem; ++ namespace bip = boost::interprocess; ++ ++ namespace orcus { ++@@ -162,7 +162,7 @@ struct file_content::impl ++ impl() : content_size(0), content(nullptr) {} ++ ++ impl(std::string_view filepath) : ++- content_size(fs::file_size(filepath)), +++ content_size(fs::file_size(std::string{filepath}.c_str())), ++ mapped_file(std::string{filepath}.c_str(), bip::read_only), ++ mapped_region(mapped_file, bip::read_only, 0, content_size), ++ content(nullptr) ++-- ++2.25.1 ++ +diff --git a/external/liborcus/inc/pch/precompiled_orcus-parser.hxx b/external/liborcus/inc/pch/precompiled_orcus-parser.hxx +index 1427148445d1..a8047d5c9e0a 100644 +--- a/external/liborcus/inc/pch/precompiled_orcus-parser.hxx ++++ b/external/liborcus/inc/pch/precompiled_orcus-parser.hxx +@@ -69,7 +69,6 @@ + #include <orcus/json_parser_thread.hpp> + #include <orcus/parser_base.hpp> + #include <orcus/parser_global.hpp> +-#include <orcus/pstring.hpp> + #include <orcus/sax_parser_base.hpp> + #include <orcus/sax_token_parser.hpp> + #include <orcus/sax_token_parser_thread.hpp> +diff --git a/external/liborcus/inc/pch/precompiled_orcus.hxx b/external/liborcus/inc/pch/precompiled_orcus.hxx +index 9edb13aec79b..9543b44eb7c5 100644 +--- a/external/liborcus/inc/pch/precompiled_orcus.hxx ++++ b/external/liborcus/inc/pch/precompiled_orcus.hxx +@@ -81,7 +81,6 @@ + #include <orcus/orcus_xml.hpp> + #include <orcus/parser_base.hpp> + #include <orcus/parser_global.hpp> +-#include <orcus/pstring.hpp> + #include <orcus/sax_ns_parser.hpp> + #include <orcus/sax_parser.hpp> + #include <orcus/sax_parser_base.hpp> +diff --git a/external/liborcus/include.patch.0 b/external/liborcus/include.patch.0 +deleted file mode 100644 +index a3275b1b13fa..000000000000 +--- a/external/liborcus/include.patch.0 ++++ /dev/null +@@ -1,30 +0,0 @@ +---- src/liborcus/orcus_xlsx.cpp +-+++ src/liborcus/orcus_xlsx.cpp +-@@ -32,6 +32,7 @@ +- +- #include <cstdlib> +- #include <iostream> +-+#include <limits> +- #include <string> +- #include <cstring> +- #include <sstream> +---- src/liborcus/xls_xml_context.cpp +-+++ src/liborcus/xls_xml_context.cpp +-@@ -16,6 +16,7 @@ +- #include <mdds/sorted_string_map.hpp> +- +- #include <iostream> +-+#include <limits> +- +- using namespace std; +- namespace ss = orcus::spreadsheet; +---- src/liborcus/xlsx_revision_context.cpp +-+++ src/liborcus/xlsx_revision_context.cpp +-@@ -16,6 +16,7 @@ +- #include "orcus/global.hpp" +- +- #include <iostream> +-+#include <limits> +- +- using namespace std; +- +diff --git a/external/liborcus/remove-unused-parameters.patch.1 b/external/liborcus/remove-unused-parameters.patch.1 +new file mode 100644 +index 000000000000..251ed804acaf +--- /dev/null ++++ b/external/liborcus/remove-unused-parameters.patch.1 +@@ -0,0 +1,1209 @@ ++From 5bb64db5ecfd1dc3be3304092f4bdebff54deae5 Mon Sep 17 00:00:00 2001 ++From: Kohei Yoshida <kohei.yoshida@gmail.com> ++Date: Tue, 2 Nov 2021 19:33:29 -0400 ++Subject: [PATCH] Remove unused parameter warnings. ++ ++--- ++ doc_example/json_parser_1.cpp | 4 +- ++ ...preadsheet_doc_2_sheets_no_string_pool.cpp | 22 ++++----- ++ .../spreadsheet_doc_2_sheets_with_formula.cpp | 47 +++++++++---------- ++ ...eadsheet_doc_2_sheets_with_string_pool.cpp | 40 +++++++--------- ++ doc_example/xml_mapping_1.cpp | 2 +- ++ src/liborcus/css_document_tree.cpp | 3 ++ ++ src/liborcus/dom_tree.cpp | 2 +- ++ src/liborcus/gnumeric_cell_context_test.cpp | 14 +++--- ++ src/liborcus/json_document_tree.cpp | 6 +-- ++ src/liborcus/json_structure_mapper.cpp | 2 +- ++ src/liborcus/json_structure_tree.cpp | 4 +- ++ src/liborcus/mock_spreadsheet.cpp | 14 +++--- ++ src/liborcus/ods_dde_links_context.cpp | 10 ++-- ++ src/liborcus/opc_context.cpp | 16 +++---- ++ src/liborcus/orcus_json.cpp | 4 +- ++ src/liborcus/orcus_xml_map_def.cpp | 4 +- ++ src/liborcus/spreadsheet_interface.cpp | 4 +- ++ src/liborcus/xls_xml_context.cpp | 12 ++--- ++ src/liborcus/xls_xml_detection_handler.cpp | 2 +- ++ src/liborcus/xlsx_drawing_context.cpp | 2 +- ++ src/liborcus/xlsx_sheet_context.cpp | 2 +- ++ src/liborcus/xlsx_sheet_context_test.cpp | 8 ++-- ++ src/liborcus/xlsx_table_context.cpp | 2 +- ++ src/liborcus/xml_structure_tree.cpp | 6 +-- ++ src/liborcus/xpath_parser_test.cpp | 2 +- ++ src/orcus_env_dump.cpp | 2 +- ++ src/orcus_test_json_mapped.cpp | 2 +- ++ src/orcus_test_xml.cpp | 2 +- ++ src/orcus_test_xml_mapped.cpp | 2 +- ++ src/parser/sax_token_parser_test.cpp | 2 +- ++ src/parser/sax_token_parser_thread.cpp | 2 +- ++ src/parser/utf8.cpp | 2 +- ++ src/parser/utf8_test.cpp | 2 +- ++ src/parser/xml_writer_test.cpp | 2 +- ++ src/python/cell.cpp | 2 +- ++ src/python/document.cpp | 4 +- ++ src/python/formula_tokens.cpp | 2 +- ++ src/python/global.cpp | 2 +- ++ src/python/json.cpp | 4 +- ++ src/python/named_expression.cpp | 2 +- ++ src/python/named_expressions.cpp | 4 +- ++ src/python/sheet.cpp | 6 +-- ++ src/python/sheet_rows.cpp | 2 +- ++ src/spreadsheet/factory_sheet.cpp | 18 +++---- ++ src/spreadsheet/sheet_impl.cpp | 2 +- ++ 45 files changed, 143 insertions(+), 157 deletions(-) ++ ++diff --git a/doc_example/json_parser_1.cpp b/doc_example/json_parser_1.cpp ++index 6fc6de12..832e5176 100644 ++--- a/doc_example/json_parser_1.cpp +++++ b/doc_example/json_parser_1.cpp ++@@ -8,12 +8,12 @@ using namespace std; ++ class json_parser_handler : public orcus::json_handler ++ { ++ public: ++- void object_key(const char* p, size_t len, bool transient) +++ void object_key(const char* p, size_t len, bool /*transient*/) ++ { ++ cout << "object key: " << std::string_view(p, len) << endl; ++ } ++ ++- void string(const char* p, size_t len, bool transient) +++ void string(const char* p, size_t len, bool /*transient*/) ++ { ++ cout << "string: " << std::string_view(p, len) << endl; ++ } ++diff --git a/doc_example/spreadsheet_doc_2_sheets_no_string_pool.cpp b/doc_example/spreadsheet_doc_2_sheets_no_string_pool.cpp ++index 63ffacc3..0aa86caf 100644 ++--- a/doc_example/spreadsheet_doc_2_sheets_no_string_pool.cpp +++++ b/doc_example/spreadsheet_doc_2_sheets_no_string_pool.cpp ++@@ -64,22 +64,17 @@ public: ++ } ++ ++ // We don't implement these methods for now. ++- virtual void set_auto(ss::row_t row, ss::col_t col, std::string_view s) override {} +++ virtual void set_auto(ss::row_t, ss::col_t, std::string_view) override {} ++ ++- virtual void set_bool(ss::row_t row, ss::col_t col, bool value) override {} +++ virtual void set_bool(ss::row_t, ss::col_t, bool) override {} ++ ++- virtual void set_date_time( ++- ss::row_t row, ss::col_t col, ++- int year, int month, int day, int hour, int minute, double second) override {} +++ virtual void set_date_time(ss::row_t, ss::col_t, int, int, int, int, int, double) override {} ++ ++- virtual void set_format(ss::row_t row, ss::col_t col, std::size_t xf_index) override {} +++ virtual void set_format(ss::row_t, ss::col_t, std::size_t) override {} ++ ++- virtual void set_format( ++- ss::row_t row_start, ss::col_t col_start, ss::row_t row_end, ss::col_t col_end, ++- std::size_t xf_index) override {} +++ virtual void set_format(ss::row_t, ss::col_t, ss::row_t, ss::col_t, std::size_t) override {} ++ ++- virtual void fill_down_cells( ++- ss::row_t src_row, ss::col_t src_col, ss::row_t range_size) override {} +++ virtual void fill_down_cells(ss::row_t, ss::col_t, ss::row_t) override {} ++ }; ++ //!code-end: my_sheet ++ ++@@ -89,14 +84,13 @@ class my_import_factory : public ss::iface::import_factory ++ std::vector<std::unique_ptr<my_sheet>> m_sheets; ++ ++ public: ++- virtual ss::iface::import_sheet* append_sheet( ++- ss::sheet_t sheet_index, std::string_view name) override +++ virtual ss::iface::import_sheet* append_sheet(ss::sheet_t, std::string_view) override ++ { ++ m_sheets.push_back(std::make_unique<my_sheet>(m_sheets.size())); ++ return m_sheets.back().get(); ++ } ++ ++- virtual ss::iface::import_sheet* get_sheet(std::string_view name) override +++ virtual ss::iface::import_sheet* get_sheet(std::string_view) override ++ { ++ // TODO : implement this. ++ return nullptr; ++diff --git a/doc_example/spreadsheet_doc_2_sheets_with_formula.cpp b/doc_example/spreadsheet_doc_2_sheets_with_formula.cpp ++index 1c3f3d5b..11e1932e 100644 ++--- a/doc_example/spreadsheet_doc_2_sheets_with_formula.cpp +++++ b/doc_example/spreadsheet_doc_2_sheets_with_formula.cpp ++@@ -87,15 +87,15 @@ public: ++ m_formula.grammar = grammar; ++ } ++ ++- virtual void set_shared_formula_index(std::size_t index) override {} +++ virtual void set_shared_formula_index(std::size_t) override {} ++ ++- virtual void set_result_string(std::string_view value) override {} +++ virtual void set_result_string(std::string_view) override {} ++ ++- virtual void set_result_value(double value) override {} +++ virtual void set_result_value(double) override {} ++ ++ virtual void set_result_empty() override {} ++ ++- virtual void set_result_bool(bool value) override {} +++ virtual void set_result_bool(bool) override {} ++ ++ virtual void commit() override ++ { ++@@ -154,22 +154,17 @@ public: ++ } ++ ++ // We don't implement these methods for now. ++- virtual void set_auto(ss::row_t row, ss::col_t col, std::string_view s) override {} +++ virtual void set_auto(ss::row_t, ss::col_t, std::string_view) override {} ++ ++- virtual void set_bool(ss::row_t row, ss::col_t col, bool value) override {} +++ virtual void set_bool(ss::row_t, ss::col_t, bool) override {} ++ ++- virtual void set_date_time( ++- ss::row_t row, ss::col_t col, ++- int year, int month, int day, int hour, int minute, double second) override {} +++ virtual void set_date_time(ss::row_t, ss::col_t, int, int, int, int, int, double) override {} ++ ++- virtual void set_format(ss::row_t row, ss::col_t col, std::size_t xf_index) override {} +++ virtual void set_format(ss::row_t, ss::col_t, std::size_t) override {} ++ ++- virtual void set_format( ++- ss::row_t row_start, ss::col_t col_start, ss::row_t row_end, ss::col_t col_end, ++- std::size_t xf_index) override {} +++ virtual void set_format(ss::row_t, ss::col_t, ss::row_t, ss::col_t, std::size_t) override {} ++ ++- virtual void fill_down_cells( ++- ss::row_t src_row, ss::col_t src_col, ss::row_t range_size) override {} +++ virtual void fill_down_cells(ss::row_t, ss::col_t, ss::row_t) override {} ++ ++ virtual ss::iface::import_formula* get_formula() override ++ { ++@@ -208,21 +203,21 @@ public: ++ } ++ ++ // The following methods are for formatted text segments, which we ignore for now. ++- virtual void set_segment_bold(bool b) override {} +++ virtual void set_segment_bold(bool) override {} ++ ++- virtual void set_segment_font(std::size_t font_index) override {} +++ virtual void set_segment_font(std::size_t) override {} ++ ++ virtual void set_segment_font_color( ++- ss::color_elem_t alpha, ++- ss::color_elem_t red, ++- ss::color_elem_t green, ++- ss::color_elem_t blue) override {} +++ ss::color_elem_t, +++ ss::color_elem_t, +++ ss::color_elem_t, +++ ss::color_elem_t) override {} ++ ++- virtual void set_segment_font_name(std::string_view s) override {} +++ virtual void set_segment_font_name(std::string_view) override {} ++ ++- virtual void set_segment_font_size(double point) override {} +++ virtual void set_segment_font_size(double) override {} ++ ++- virtual void set_segment_italic(bool b) override {} +++ virtual void set_segment_italic(bool) override {} ++ ++ virtual void append_segment(std::string_view s) override ++ { ++@@ -256,14 +251,14 @@ public: ++ return &m_shared_strings; ++ } ++ ++- virtual ss::iface::import_sheet* append_sheet(ss::sheet_t sheet_index, std::string_view name) override +++ virtual ss::iface::import_sheet* append_sheet(ss::sheet_t, std::string_view) override ++ { ++ // Pass the string pool to each sheet instance. ++ m_sheets.push_back(std::make_unique<my_sheet>(m_sheets.size(), m_string_pool)); ++ return m_sheets.back().get(); ++ } ++ ++- virtual ss::iface::import_sheet* get_sheet(std::string_view name) override +++ virtual ss::iface::import_sheet* get_sheet(std::string_view) override ++ { ++ // TODO : implement this. ++ return nullptr; ++diff --git a/doc_example/spreadsheet_doc_2_sheets_with_string_pool.cpp b/doc_example/spreadsheet_doc_2_sheets_with_string_pool.cpp ++index ff69c835..0153dd08 100644 ++--- a/doc_example/spreadsheet_doc_2_sheets_with_string_pool.cpp +++++ b/doc_example/spreadsheet_doc_2_sheets_with_string_pool.cpp ++@@ -70,22 +70,17 @@ public: ++ } ++ ++ // We don't implement these methods for now. ++- virtual void set_auto(ss::row_t row, ss::col_t col, std::string_view s) override {} +++ virtual void set_auto(ss::row_t, ss::col_t, std::string_view) override {} ++ ++- virtual void set_bool(ss::row_t row, ss::col_t col, bool value) override {} +++ virtual void set_bool(ss::row_t, ss::col_t, bool) override {} ++ ++- virtual void set_date_time( ++- ss::row_t row, ss::col_t col, ++- int year, int month, int day, int hour, int minute, double second) override {} +++ virtual void set_date_time(ss::row_t, ss::col_t, int, int, int, int, int, double) override {} ++ ++- virtual void set_format(ss::row_t row, ss::col_t col, std::size_t xf_index) override {} +++ virtual void set_format(ss::row_t, ss::col_t, std::size_t) override {} ++ ++- virtual void set_format( ++- ss::row_t row_start, ss::col_t col_start, ss::row_t row_end, ss::col_t col_end, ++- std::size_t xf_index) override {} +++ virtual void set_format(ss::row_t, ss::col_t, ss::row_t, ss::col_t, std::size_t) override {} ++ ++- virtual void fill_down_cells( ++- ss::row_t src_row, ss::col_t src_col, ss::row_t range_size) override {} +++ virtual void fill_down_cells(ss::row_t, ss::col_t, ss::row_t) override {} ++ }; ++ ++ //!code-start: my_shared_strings ++@@ -119,21 +114,21 @@ public: ++ } ++ ++ // The following methods are for formatted text segments, which we ignore for now. ++- virtual void set_segment_bold(bool b) override {} +++ virtual void set_segment_bold(bool) override {} ++ ++- virtual void set_segment_font(std::size_t font_index) override {} +++ virtual void set_segment_font(std::size_t) override {} ++ ++ virtual void set_segment_font_color( ++- ss::color_elem_t alpha, ++- ss::color_elem_t red, ++- ss::color_elem_t green, ++- ss::color_elem_t blue) override {} +++ ss::color_elem_t, +++ ss::color_elem_t, +++ ss::color_elem_t, +++ ss::color_elem_t) override {} ++ ++- virtual void set_segment_font_name(std::string_view s) override {} +++ virtual void set_segment_font_name(std::string_view) override {} ++ ++- virtual void set_segment_font_size(double point) override {} +++ virtual void set_segment_font_size(double) override {} ++ ++- virtual void set_segment_italic(bool b) override {} +++ virtual void set_segment_italic(bool) override {} ++ ++ virtual void append_segment(std::string_view s) override ++ { ++@@ -169,15 +164,14 @@ public: ++ return &m_shared_strings; ++ } ++ ++- virtual ss::iface::import_sheet* append_sheet( ++- ss::sheet_t sheet_index, std::string_view name) override +++ virtual ss::iface::import_sheet* append_sheet(ss::sheet_t, std::string_view) override ++ { ++ // Pass the string pool to each sheet instance. ++ m_sheets.push_back(std::make_unique<my_sheet>(m_sheets.size(), m_string_pool)); ++ return m_sheets.back().get(); ++ } ++ ++- virtual ss::iface::import_sheet* get_sheet(std::string_view name) override +++ virtual ss::iface::import_sheet* get_sheet(std::string_view) override ++ { ++ // TODO : implement this. ++ return nullptr; ++diff --git a/doc_example/xml_mapping_1.cpp b/doc_example/xml_mapping_1.cpp ++index f23d620c..33d6ff22 100644 ++--- a/doc_example/xml_mapping_1.cpp +++++ b/doc_example/xml_mapping_1.cpp ++@@ -118,7 +118,7 @@ void run_xmlns_different_ns_same_alias() ++ cout << (alias_1 == alias_2 ? "same" : "different") << endl; ++ } ++ ++-int main(int argc, char** argv) +++int main() ++ { ++ run_xmlns_example(); ++ run_xmlns_stacked(); ++diff --git a/src/liborcus/css_document_tree.cpp b/src/liborcus/css_document_tree.cpp ++index 5f84c013..46bf7e91 100644 ++--- a/src/liborcus/css_document_tree.cpp +++++ b/src/liborcus/css_document_tree.cpp ++@@ -54,6 +54,9 @@ public: ++ { ++ #if ORCUS_DEBUG_CSS_DOCTREE ++ cout << "@" << string(p, n).c_str(); +++#else +++ (void)p; +++ (void)n; ++ #endif ++ } ++ ++diff --git a/src/liborcus/dom_tree.cpp b/src/liborcus/dom_tree.cpp ++index 51db6ef8..64ecf8ef 100644 ++--- a/src/liborcus/dom_tree.cpp +++++ b/src/liborcus/dom_tree.cpp ++@@ -527,7 +527,7 @@ void document_tree::impl::end_element(const sax_ns_parser_element& elem) ++ m_elem_stack.pop_back(); ++ } ++ ++-void document_tree::impl::characters(const pstring& val, bool transient) +++void document_tree::impl::characters(const pstring& val, bool /*transient*/) ++ { ++ if (m_elem_stack.empty()) ++ // No root element has been encountered. Ignore this. ++diff --git a/src/liborcus/gnumeric_cell_context_test.cpp b/src/liborcus/gnumeric_cell_context_test.cpp ++index fc543096..aeec16bd 100644 ++--- a/src/liborcus/gnumeric_cell_context_test.cpp +++++ b/src/liborcus/gnumeric_cell_context_test.cpp ++@@ -41,19 +41,19 @@ public: ++ assert(formula == "=arrayFormula"); ++ } ++ ++- virtual void set_result_bool(row_t row, col_t col, bool value) override +++ virtual void set_result_bool(row_t, col_t, bool) override ++ { ++ } ++ ++- virtual void set_result_empty(row_t row, col_t col) override +++ virtual void set_result_empty(row_t, col_t) override ++ { ++ } ++ ++- virtual void set_result_string(row_t row, col_t col, std::string_view) override +++ virtual void set_result_string(row_t, col_t, std::string_view) override ++ { ++ } ++ ++- virtual void set_result_value(row_t row, col_t col, double value) override +++ virtual void set_result_value(row_t, col_t, double) override ++ { ++ } ++ ++@@ -77,11 +77,11 @@ public: ++ assert(formula == "=formula"); ++ } ++ ++- virtual void set_shared_formula_index(size_t index) override +++ virtual void set_shared_formula_index(size_t) override ++ { ++ } ++ ++- virtual void set_result_bool(bool value) override +++ virtual void set_result_bool(bool) override ++ { ++ } ++ ++@@ -93,7 +93,7 @@ public: ++ { ++ } ++ ++- virtual void set_result_value(double value) override +++ virtual void set_result_value(double) override ++ { ++ } ++ ++diff --git a/src/liborcus/json_document_tree.cpp b/src/liborcus/json_document_tree.cpp ++index 4eedea47..c163a364 100644 ++--- a/src/liborcus/json_document_tree.cpp +++++ b/src/liborcus/json_document_tree.cpp ++@@ -1217,7 +1217,7 @@ array::array(std::initializer_list<detail::init::node> vs) ++ array::~array() {} ++ ++ object::object() {} ++-object::object(object&& other) {} +++object::object(object&& /*other*/) {} ++ object::~object() {} ++ ++ namespace { ++@@ -1388,7 +1388,7 @@ struct node::impl ++ m_value_array(std::move(array.m_vs)) ++ {} ++ ++- impl(json::object obj) : +++ impl(json::object /*obj*/) : ++ m_type(detail::node_t::object) {} ++ }; ++ ++@@ -1634,7 +1634,7 @@ document_tree::document_tree(array vs) : mp_impl(std::make_unique<impl>()) ++ } ++ } ++ ++-document_tree::document_tree(object obj) : mp_impl(std::make_unique<impl>()) +++document_tree::document_tree(object /*obj*/) : mp_impl(std::make_unique<impl>()) ++ { ++ mp_impl->m_root = mp_impl->m_res.obj_pool.construct(detail::node_t::object); ++ mp_impl->m_root->value.object = mp_impl->m_res.obj_pool_jvo.construct(); ++diff --git a/src/liborcus/json_structure_mapper.cpp b/src/liborcus/json_structure_mapper.cpp ++index 111d1674..09a9e97e 100644 ++--- a/src/liborcus/json_structure_mapper.cpp +++++ b/src/liborcus/json_structure_mapper.cpp ++@@ -40,7 +40,7 @@ void structure_mapper::push_range() ++ m_current_range.row_groups.clear(); ++ } ++ ++-void structure_mapper::traverse(size_t pos) +++void structure_mapper::traverse(size_t /*pos*/) ++ { ++ json::structure_tree::node_properties node = m_walker.get_node(); ++ ++diff --git a/src/liborcus/json_structure_tree.cpp b/src/liborcus/json_structure_tree.cpp ++index 5c9d600c..3ae8ecc0 100644 ++--- a/src/liborcus/json_structure_tree.cpp +++++ b/src/liborcus/json_structure_tree.cpp ++@@ -235,12 +235,12 @@ struct structure_tree::impl ++ push_value(); ++ } ++ ++- void string(const char* p, size_t len, bool transient) +++ void string(const char* /*p*/, size_t /*len*/, bool /*transient*/) ++ { ++ push_value(); ++ } ++ ++- void number(double val) +++ void number(double /*val*/) ++ { ++ push_value(); ++ } ++diff --git a/src/liborcus/mock_spreadsheet.cpp b/src/liborcus/mock_spreadsheet.cpp ++index 3bde38ff..4042bdc9 100644 ++--- a/src/liborcus/mock_spreadsheet.cpp +++++ b/src/liborcus/mock_spreadsheet.cpp ++@@ -211,22 +211,22 @@ import_formula::~import_formula() ++ { ++ } ++ ++-void import_formula::set_position(row_t row, col_t col) +++void import_formula::set_position(row_t, col_t) ++ { ++ assert(false); ++ } ++ ++-void import_formula::set_formula(formula_grammar_t grammar, std::string_view) +++void import_formula::set_formula(formula_grammar_t, std::string_view) ++ { ++ assert(false); ++ } ++ ++-void import_formula::set_shared_formula_index(size_t index) +++void import_formula::set_shared_formula_index(size_t) ++ { ++ assert(false); ++ } ++ ++-void import_formula::set_result_value(double value) +++void import_formula::set_result_value(double) ++ { ++ assert(false); ++ } ++@@ -236,7 +236,7 @@ void import_formula::set_result_string(std::string_view) ++ assert(false); ++ } ++ ++-void import_formula::set_result_bool(bool value) +++void import_formula::set_result_bool(bool) ++ { ++ assert(false); ++ } ++@@ -257,7 +257,7 @@ import_sheet::~import_sheet() ++ { ++ } ++ ++-void import_sheet::set_auto(row_t, col_t, std::string_view s) +++void import_sheet::set_auto(row_t, col_t, std::string_view) ++ { ++ assert(false); ++ } ++@@ -292,7 +292,7 @@ void import_sheet::set_format(row_t, col_t, row_t, col_t, size_t) ++ assert(false); ++ } ++ ++-void import_sheet::fill_down_cells(row_t src_row, col_t src_col, row_t range_size) +++void import_sheet::fill_down_cells(row_t, col_t, row_t) ++ { ++ assert(false); ++ } ++diff --git a/src/liborcus/ods_dde_links_context.cpp b/src/liborcus/ods_dde_links_context.cpp ++index db7ab672..783b106f 100644 ++--- a/src/liborcus/ods_dde_links_context.cpp +++++ b/src/liborcus/ods_dde_links_context.cpp ++@@ -14,21 +14,21 @@ ods_dde_links_context::ods_dde_links_context(session_context& session_cxt, const ++ ++ ods_dde_links_context::~ods_dde_links_context() {} ++ ++-bool ods_dde_links_context::can_handle_element(xmlns_id_t ns, xml_token_t name) const +++bool ods_dde_links_context::can_handle_element(xmlns_id_t /*ns*/, xml_token_t /*name*/) const ++ { ++ return true; ++ } ++ ++-xml_context_base* ods_dde_links_context::create_child_context(xmlns_id_t ns, xml_token_t name) +++xml_context_base* ods_dde_links_context::create_child_context(xmlns_id_t /*ns*/, xml_token_t /*name*/) ++ { ++ return nullptr; ++ } ++ ++-void ods_dde_links_context::end_child_context(xmlns_id_t ns, xml_token_t name, xml_context_base *child) +++void ods_dde_links_context::end_child_context(xmlns_id_t /*ns*/, xml_token_t /*name*/, xml_context_base* /*child*/) ++ { ++ } ++ ++-void ods_dde_links_context::start_element(xmlns_id_t ns, xml_token_t name, const::std::vector<xml_token_attr_t> &attrs) +++void ods_dde_links_context::start_element(xmlns_id_t ns, xml_token_t name, const::std::vector<xml_token_attr_t>& /*attrs*/) ++ { ++ xml_token_pair_t parent = push_stack(ns, name); ++ (void)parent; ++@@ -41,7 +41,7 @@ bool ods_dde_links_context::end_element(xmlns_id_t ns, xml_token_t name) ++ return pop_stack(ns, name); ++ } ++ ++-void ods_dde_links_context::characters(const pstring &str, bool transient) +++void ods_dde_links_context::characters(const pstring& /*str*/, bool /*transient*/) ++ { ++ } ++ ++diff --git a/src/liborcus/opc_context.cpp b/src/liborcus/opc_context.cpp ++index ef1a591f..d3cddabd 100644 ++--- a/src/liborcus/opc_context.cpp +++++ b/src/liborcus/opc_context.cpp ++@@ -90,17 +90,17 @@ opc_content_types_context::~opc_content_types_context() ++ { ++ } ++ ++-bool opc_content_types_context::can_handle_element(xmlns_id_t ns, xml_token_t name) const +++bool opc_content_types_context::can_handle_element(xmlns_id_t /*ns*/, xml_token_t /*name*/) const ++ { ++ return true; ++ } ++ ++-xml_context_base* opc_content_types_context::create_child_context(xmlns_id_t ns, xml_token_t name) +++xml_context_base* opc_content_types_context::create_child_context(xmlns_id_t /*ns*/, xml_token_t /*name*/) ++ { ++ return nullptr; ++ } ++ ++-void opc_content_types_context::end_child_context(xmlns_id_t ns, xml_token_t name, xml_context_base *child) +++void opc_content_types_context::end_child_context(xmlns_id_t /*ns*/, xml_token_t /*name*/, xml_context_base* /*child*/) ++ { ++ } ++ ++@@ -153,7 +153,7 @@ bool opc_content_types_context::end_element(xmlns_id_t ns, xml_token_t name) ++ return pop_stack(ns, name); ++ } ++ ++-void opc_content_types_context::characters(const pstring &str, bool transient) +++void opc_content_types_context::characters(const pstring& /*str*/, bool /*transient*/) ++ { ++ } ++ ++@@ -256,17 +256,17 @@ opc_relations_context::~opc_relations_context() ++ { ++ } ++ ++-bool opc_relations_context::can_handle_element(xmlns_id_t ns, xml_token_t name) const +++bool opc_relations_context::can_handle_element(xmlns_id_t /*ns*/, xml_token_t /*name*/) const ++ { ++ return true; ++ } ++ ++-xml_context_base* opc_relations_context::create_child_context(xmlns_id_t ns, xml_token_t name) +++xml_context_base* opc_relations_context::create_child_context(xmlns_id_t /*ns*/, xml_token_t /*name*/) ++ { ++ return nullptr; ++ } ++ ++-void opc_relations_context::end_child_context(xmlns_id_t ns, xml_token_t name, xml_context_base *child) +++void opc_relations_context::end_child_context(xmlns_id_t /*ns*/, xml_token_t /*name*/, xml_context_base* /*child*/) ++ { ++ } ++ ++@@ -302,7 +302,7 @@ bool opc_relations_context::end_element(xmlns_id_t ns, xml_token_t name) ++ return pop_stack(ns, name); ++ } ++ ++-void opc_relations_context::characters(const pstring &str, bool transient) +++void opc_relations_context::characters(const pstring& /*str*/, bool /*transient*/) ++ { ++ } ++ ++diff --git a/src/liborcus/orcus_json.cpp b/src/liborcus/orcus_json.cpp ++index 2b5967d5..69672190 100644 ++--- a/src/liborcus/orcus_json.cpp +++++ b/src/liborcus/orcus_json.cpp ++@@ -137,7 +137,7 @@ public: ++ push_node(json_map_tree::input_node_type::object); ++ } ++ ++- void object_key(const char* p, size_t len, bool transient) +++ void object_key(const char* p, size_t len, bool /*transient*/) ++ { ++ m_walker.set_object_key(p, len); ++ } ++@@ -168,7 +168,7 @@ public: ++ pop_node(json_map_tree::input_node_type::value); ++ } ++ ++- void string(const char* p, size_t len, bool transient) +++ void string(const char* p, size_t len, bool /*transient*/) ++ { ++ push_node(json_map_tree::input_node_type::value); ++ commit_value(json_value(p, len)); ++diff --git a/src/liborcus/orcus_xml_map_def.cpp b/src/liborcus/orcus_xml_map_def.cpp ++index 4c70e060..889dbcb0 100644 ++--- a/src/liborcus/orcus_xml_map_def.cpp +++++ b/src/liborcus/orcus_xml_map_def.cpp ++@@ -43,9 +43,9 @@ public: ++ xml_map_sax_handler(orcus_xml& app) : m_app(app) {} ++ ++ void doctype(const sax::doctype_declaration&) {} ++- void start_declaration(const pstring& name) {} +++ void start_declaration(const pstring& /*name*/) {} ++ ++- void end_declaration(const pstring& name) +++ void end_declaration(const pstring& /*name*/) ++ { ++ m_attrs.clear(); ++ } ++diff --git a/src/liborcus/spreadsheet_interface.cpp b/src/liborcus/spreadsheet_interface.cpp ++index 87103233..985caf45 100644 ++--- a/src/liborcus/spreadsheet_interface.cpp +++++ b/src/liborcus/spreadsheet_interface.cpp ++@@ -124,13 +124,13 @@ import_reference_resolver* import_factory::get_reference_resolver(formula_ref_co ++ } ++ ++ import_pivot_cache_definition* import_factory::create_pivot_cache_definition( ++- orcus::spreadsheet::pivot_cache_id_t cache_id) +++ orcus::spreadsheet::pivot_cache_id_t /*cache_id*/) ++ { ++ return nullptr; ++ } ++ ++ import_pivot_cache_records* import_factory::create_pivot_cache_records( ++- orcus::spreadsheet::pivot_cache_id_t cache_id) +++ orcus::spreadsheet::pivot_cache_id_t /*cache_id*/) ++ { ++ return nullptr; ++ } ++diff --git a/src/liborcus/xls_xml_context.cpp b/src/liborcus/xls_xml_context.cpp ++index f5b8fe26..b2d6d398 100644 ++--- a/src/liborcus/xls_xml_context.cpp +++++ b/src/liborcus/xls_xml_context.cpp ++@@ -90,17 +90,17 @@ xls_xml_data_context::xls_xml_data_context( ++ ++ xls_xml_data_context::~xls_xml_data_context() {} ++ ++-bool xls_xml_data_context::can_handle_element(xmlns_id_t ns, xml_token_t name) const +++bool xls_xml_data_context::can_handle_element(xmlns_id_t /*ns*/, xml_token_t /*name*/) const ++ { ++ return true; ++ } ++ ++-xml_context_base* xls_xml_data_context::create_child_context(xmlns_id_t ns, xml_token_t name) +++xml_context_base* xls_xml_data_context::create_child_context(xmlns_id_t /*ns*/, xml_token_t /*name*/) ++ { ++ return nullptr; ++ } ++ ++-void xls_xml_data_context::end_child_context(xmlns_id_t ns, xml_token_t name, xml_context_base* child) +++void xls_xml_data_context::end_child_context(xmlns_id_t /*ns*/, xml_token_t /*name*/, xml_context_base* /*child*/) ++ { ++ } ++ ++@@ -254,7 +254,7 @@ void xls_xml_data_context::reset() ++ } ++ ++ void xls_xml_data_context::start_element_data( ++- const xml_token_pair_t& parent, const xml_attrs_t& attrs) +++ const xml_token_pair_t& /*parent*/, const xml_attrs_t& attrs) ++ { ++ m_cell_type = ct_unknown; ++ m_cell_string.clear(); ++@@ -776,7 +776,7 @@ xml_context_base* xls_xml_context::create_child_context(xmlns_id_t ns, xml_token ++ return nullptr; ++ } ++ ++-void xls_xml_context::end_child_context(xmlns_id_t ns, xml_token_t name, xml_context_base* child) +++void xls_xml_context::end_child_context(xmlns_id_t /*ns*/, xml_token_t /*name*/, xml_context_base* /*child*/) ++ { ++ } ++ ++@@ -1217,7 +1217,7 @@ void xls_xml_context::characters(const pstring& str, bool /*transient*/) ++ } ++ } ++ ++-void xls_xml_context::start_element_borders(const xml_token_pair_t& parent, const xml_attrs_t& attrs) +++void xls_xml_context::start_element_borders(const xml_token_pair_t& parent, const xml_attrs_t& /*attrs*/) ++ { ++ xml_element_expected(parent, NS_xls_xml_ss, XML_Style); ++ m_current_style->borders.clear(); ++diff --git a/src/liborcus/xls_xml_detection_handler.cpp b/src/liborcus/xls_xml_detection_handler.cpp ++index aaa1b148..2b18c8ee 100644 ++--- a/src/liborcus/xls_xml_detection_handler.cpp +++++ b/src/liborcus/xls_xml_detection_handler.cpp ++@@ -36,7 +36,7 @@ public: ++ return nullptr; ++ } ++ ++- virtual void start_element(xmlns_id_t ns, xml_token_t name, const::std::vector<xml_token_attr_t>& attrs) +++ virtual void start_element(xmlns_id_t ns, xml_token_t name, const::std::vector<xml_token_attr_t>& /*attrs*/) ++ { ++ xml_token_pair_t parent = push_stack(ns, name); ++ if (ns == NS_xls_xml_ss) ++diff --git a/src/liborcus/xlsx_drawing_context.cpp b/src/liborcus/xlsx_drawing_context.cpp ++index f7dc31ab..380d7852 100644 ++--- a/src/liborcus/xlsx_drawing_context.cpp +++++ b/src/liborcus/xlsx_drawing_context.cpp ++@@ -41,7 +41,7 @@ void xlsx_drawing_context::end_child_context(xmlns_id_t /*ns*/, xml_token_t /*na ++ { ++ } ++ ++-void xlsx_drawing_context::start_element(xmlns_id_t ns, xml_token_t name, const::std::vector<xml_token_attr_t>& attrs) +++void xlsx_drawing_context::start_element(xmlns_id_t ns, xml_token_t name, const::std::vector<xml_token_attr_t>& /*attrs*/) ++ { ++ xml_token_pair_t parent = push_stack(ns, name); ++ ++diff --git a/src/liborcus/xlsx_sheet_context.cpp b/src/liborcus/xlsx_sheet_context.cpp ++index 669f604f..50018c32 100644 ++--- a/src/liborcus/xlsx_sheet_context.cpp +++++ b/src/liborcus/xlsx_sheet_context.cpp ++@@ -845,7 +845,7 @@ void xlsx_sheet_context::push_raw_cell_value() ++ } ++ ++ void xlsx_sheet_context::push_raw_cell_result( ++- range_formula_results& res, size_t row_offset, size_t col_offset, xlsx_session_data& session_data) const +++ range_formula_results& res, size_t row_offset, size_t col_offset, xlsx_session_data& /*session_data*/) const ++ { ++ if (m_cur_value.empty()) ++ return; ++diff --git a/src/liborcus/xlsx_sheet_context_test.cpp b/src/liborcus/xlsx_sheet_context_test.cpp ++index 9cb0d2a5..11ec8b71 100644 ++--- a/src/liborcus/xlsx_sheet_context_test.cpp +++++ b/src/liborcus/xlsx_sheet_context_test.cpp ++@@ -64,19 +64,19 @@ public: ++ assert(formula == "A1:A2"); ++ } ++ ++- virtual void set_result_bool(row_t row, col_t col, bool value) override +++ virtual void set_result_bool(row_t, col_t, bool) override ++ { ++ } ++ ++- virtual void set_result_empty(row_t row, col_t col) override +++ virtual void set_result_empty(row_t, col_t) override ++ { ++ } ++ ++- virtual void set_result_string(row_t row, col_t col, std::string_view) override +++ virtual void set_result_string(row_t, col_t, std::string_view) override ++ { ++ } ++ ++- virtual void set_result_value(row_t row, col_t col, double value) override +++ virtual void set_result_value(row_t, col_t, double) override ++ { ++ } ++ ++diff --git a/src/liborcus/xlsx_table_context.cpp b/src/liborcus/xlsx_table_context.cpp ++index e135f44d..d8c360df 100644 ++--- a/src/liborcus/xlsx_table_context.cpp +++++ b/src/liborcus/xlsx_table_context.cpp ++@@ -317,7 +317,7 @@ bool xlsx_table_context::end_element(xmlns_id_t ns, xml_token_t name) ++ return pop_stack(ns, name); ++ } ++ ++-void xlsx_table_context::characters(const pstring& str, bool transient) +++void xlsx_table_context::characters(const pstring& /*str*/, bool /*transient*/) ++ { ++ } ++ ++diff --git a/src/liborcus/xml_structure_tree.cpp b/src/liborcus/xml_structure_tree.cpp ++index 9eaf3c07..5185049e 100644 ++--- a/src/liborcus/xml_structure_tree.cpp +++++ b/src/liborcus/xml_structure_tree.cpp ++@@ -125,11 +125,11 @@ public: ++ ++ void doctype(const sax::doctype_declaration&) {} ++ ++- void start_declaration(const pstring& name) +++ void start_declaration(const pstring& /*name*/) ++ { ++ } ++ ++- void end_declaration(const pstring& name) +++ void end_declaration(const pstring& /*name*/) ++ { ++ m_attrs.clear(); ++ } ++@@ -185,7 +185,7 @@ public: ++ m_stack.push_back(ref); ++ } ++ ++- void end_element(const sax_ns_parser_element& elem) +++ void end_element(const sax_ns_parser_element& /*elem*/) ++ { ++ if (m_stack.empty()) ++ throw general_error("Element stack is empty."); ++diff --git a/src/liborcus/xpath_parser_test.cpp b/src/liborcus/xpath_parser_test.cpp ++index 12242f62..f67c0dc6 100644 ++--- a/src/liborcus/xpath_parser_test.cpp +++++ b/src/liborcus/xpath_parser_test.cpp ++@@ -64,7 +64,7 @@ void test_attributes() ++ assert(token.attribute); ++ } ++ ++-int main(int argc, char** argv) +++int main() ++ { ++ test_elements(); ++ test_attributes(); ++diff --git a/src/orcus_env_dump.cpp b/src/orcus_env_dump.cpp ++index ad60927a..99f53718 100644 ++--- a/src/orcus_env_dump.cpp +++++ b/src/orcus_env_dump.cpp ++@@ -13,7 +13,7 @@ ++ using std::cout; ++ using std::endl; ++ ++-int main(int argc, char** argv) +++int main() ++ { ++ cout << "CPU flags:" << endl; ++ cout << " SSE 4.2: " << orcus::detail::cpu::has_sse42() << endl; ++diff --git a/src/orcus_test_json_mapped.cpp b/src/orcus_test_json_mapped.cpp ++index ed10a842..c504e156 100644 ++--- a/src/orcus_test_json_mapped.cpp +++++ b/src/orcus_test_json_mapped.cpp ++@@ -88,7 +88,7 @@ void test_invalid_map_definition() ++ } ++ } ++ ++-int main(int argc, char** argv) +++int main() ++ { ++ test_mapped_json_import(); ++ test_invalid_map_definition(); ++diff --git a/src/orcus_test_xml.cpp b/src/orcus_test_xml.cpp ++index 2a44a8ac..de5197cf 100644 ++--- a/src/orcus_test_xml.cpp +++++ b/src/orcus_test_xml.cpp ++@@ -85,7 +85,7 @@ const char* sax_parser_parse_only_test_dirs[] = { ++ SRCDIR"/test/xml/parse-only/rss/" ++ }; ++ ++-void parse_file(dom::document_tree& tree, const char* filepath, string& strm) +++void parse_file(dom::document_tree& tree, const char* filepath, std::string& /*strm*/) ++ { ++ cout << "testing " << filepath << endl; ++ file_content content(filepath); ++diff --git a/src/orcus_test_xml_mapped.cpp b/src/orcus_test_xml_mapped.cpp ++index b90ea020..8e18cfda 100644 ++--- a/src/orcus_test_xml_mapped.cpp +++++ b/src/orcus_test_xml_mapped.cpp ++@@ -66,7 +66,7 @@ void test_mapped_xml_import() ++ { SRCDIR"/test/xml-mapped/nested-repeats-4", false }, ++ }; ++ ++- auto dump_xml_structure = [](string& dump_content, string& strm, const char* filepath, xmlns_context& cxt) +++ auto dump_xml_structure = [](std::string& dump_content, std::string& /*strm*/, const char* filepath, xmlns_context& cxt) ++ { ++ file_content content(filepath); ++ dom::document_tree tree(cxt); ++diff --git a/src/parser/sax_token_parser_test.cpp b/src/parser/sax_token_parser_test.cpp ++index 2647444c..6ff8c932 100644 ++--- a/src/parser/sax_token_parser_test.cpp +++++ b/src/parser/sax_token_parser_test.cpp ++@@ -146,7 +146,7 @@ void test_unicode_string() ++ { ++ } ++ ++- void characters(std::string_view val, bool transient) +++ void characters(std::string_view val, bool /*transient*/) ++ { ++ std::cout << "charachters:" << std::endl; ++ std::cout << val << std::endl; ++diff --git a/src/parser/sax_token_parser_thread.cpp b/src/parser/sax_token_parser_thread.cpp ++index b9166e3c..d21ae6d7 100644 ++--- a/src/parser/sax_token_parser_thread.cpp +++++ b/src/parser/sax_token_parser_thread.cpp ++@@ -86,7 +86,7 @@ struct parser_thread::impl ++ m_token_buffer.abort(); ++ } ++ ++- void declaration(const orcus::xml_declaration_t& decl) +++ void declaration(const orcus::xml_declaration_t& /*decl*/) ++ { ++ } ++ ++diff --git a/src/parser/utf8.cpp b/src/parser/utf8.cpp ++index f3b264a7..e02d2244 100644 ++--- a/src/parser/utf8.cpp +++++ b/src/parser/utf8.cpp ++@@ -231,7 +231,7 @@ bool parse_3b_second_char(uint8_t c1, uint8_t c2, uint8_t c3) ++ } ++ ++ // [#x10000-#xEFFFF]: F0 90 80 80 -> F3 AF BF BF ++-bool parse_4b_char(uint8_t c1, uint8_t c2, uint8_t c3, uint8_t c4) +++bool parse_4b_char(uint8_t c1, uint8_t c2, uint8_t /*c3*/, uint8_t /*c4*/) ++ { ++ // F0 90 80 80 -> F3 AF BF BF ++ // - F0 90 xx xx -> F0 xx xx xx ++diff --git a/src/parser/utf8_test.cpp b/src/parser/utf8_test.cpp ++index 78b7656a..88dcd3e8 100644 ++--- a/src/parser/utf8_test.cpp +++++ b/src/parser/utf8_test.cpp ++@@ -159,7 +159,7 @@ void test_xml_name_char() ++ assert(res); ++ } ++ ++-int main(int argc, char** argv) +++int main() ++ { ++ test_xml_name_start_char(); ++ test_xml_name_char(); ++diff --git a/src/parser/xml_writer_test.cpp b/src/parser/xml_writer_test.cpp ++index e5a22357..8687db32 100644 ++--- a/src/parser/xml_writer_test.cpp +++++ b/src/parser/xml_writer_test.cpp ++@@ -28,7 +28,7 @@ void test_encoded_content() ++ { ++ std::ostringstream os_content; ++ ++- void characters(std::string_view val, bool transient) +++ void characters(std::string_view val, bool /*transient*/) ++ { ++ os_content << val; ++ } ++diff --git a/src/python/cell.cpp b/src/python/cell.cpp ++index 536b5c4d..16374b8f 100644 ++--- a/src/python/cell.cpp +++++ b/src/python/cell.cpp ++@@ -115,7 +115,7 @@ int tp_init(pyobj_cell* self, PyObject* args, PyObject* kwargs) ++ return 0; ++ } ++ ++-PyObject* cell_get_formula_tokens(PyObject* self, PyObject* args, PyObject* kwargs) +++PyObject* cell_get_formula_tokens(PyObject* self, PyObject* /*args*/, PyObject* /*kwargs*/) ++ { ++ pyobj_cell* obj = reinterpret_cast<pyobj_cell*>(self); ++ cell_data& data = *obj->data; ++diff --git a/src/python/document.cpp b/src/python/document.cpp ++index b06463bc..02a2dc49 100644 ++--- a/src/python/document.cpp +++++ b/src/python/document.cpp ++@@ -69,12 +69,12 @@ PyObject* tp_new(PyTypeObject* type, PyObject* /*args*/, PyObject* /*kwargs*/) ++ return reinterpret_cast<PyObject*>(self); ++ } ++ ++-int tp_init(pyobj_document* self, PyObject* /*args*/, PyObject* /*kwargs*/) +++int tp_init(pyobj_document* /*self*/, PyObject* /*args*/, PyObject* /*kwargs*/) ++ { ++ return 0; ++ } ++ ++-PyObject* doc_get_named_expressions(PyObject* self, PyObject* args, PyObject* kwargs) +++PyObject* doc_get_named_expressions(PyObject* self, PyObject* /*args*/, PyObject* /*kwargs*/) ++ { ++ const ss::document& doc = *t(self)->data->m_doc; ++ const ixion::model_context& cxt = doc.get_model_context(); ++diff --git a/src/python/formula_tokens.cpp b/src/python/formula_tokens.cpp ++index 569d1a7a..3eece2d4 100644 ++--- a/src/python/formula_tokens.cpp +++++ b/src/python/formula_tokens.cpp ++@@ -56,7 +56,7 @@ void tp_dealloc(pyobj_formula_tokens* self) ++ Py_TYPE(self)->tp_free(reinterpret_cast<PyObject*>(self)); ++ } ++ ++-int tp_init(pyobj_formula_tokens* self, PyObject* /*args*/, PyObject* /*kwargs*/) +++int tp_init(pyobj_formula_tokens* /*self*/, PyObject* /*args*/, PyObject* /*kwargs*/) ++ { ++ return 0; ++ } ++diff --git a/src/python/global.cpp b/src/python/global.cpp ++index 7a21f960..f8623e0d 100644 ++--- a/src/python/global.cpp +++++ b/src/python/global.cpp ++@@ -16,7 +16,7 @@ void set_python_exception(PyObject* type, const std::exception& e) ++ { ++ std::ostringstream os; ++ os << "C++ exception caught: " << e.what(); ++- PyErr_SetString(PyExc_RuntimeError, os.str().data()); +++ PyErr_SetString(type, os.str().data()); ++ } ++ ++ PyObject* get_python_enum_value(const char* enum_class_name, const char* value_name) ++diff --git a/src/python/json.cpp b/src/python/json.cpp ++index fdeea10c..f22cf666 100644 ++--- a/src/python/json.cpp +++++ b/src/python/json.cpp ++@@ -177,7 +177,7 @@ public: ++ } ++ } ++ ++- void object_key(const char* p, size_t len, bool transient) +++ void object_key(const char* p, size_t len, bool /*transient*/) ++ { ++ parser_stack& cur = m_stack.back(); ++ cur.key = PyUnicode_FromStringAndSize(p, len); ++@@ -213,7 +213,7 @@ public: ++ push_value(Py_None); ++ } ++ ++- void string(const char* p, size_t len, bool transient) +++ void string(const char* p, size_t len, bool /*transient*/) ++ { ++ push_value(PyUnicode_FromStringAndSize(p, len)); ++ } ++diff --git a/src/python/named_expression.cpp b/src/python/named_expression.cpp ++index 8edeeacf..1402daa0 100644 ++--- a/src/python/named_expression.cpp +++++ b/src/python/named_expression.cpp ++@@ -81,7 +81,7 @@ PyObject* tp_new(PyTypeObject* type, PyObject* /*args*/, PyObject* /*kwargs*/) ++ return reinterpret_cast<PyObject*>(self); ++ } ++ ++-PyObject* ne_get_formula_tokens(PyObject* self, PyObject* args, PyObject* kwargs) +++PyObject* ne_get_formula_tokens(PyObject* self, PyObject* /*args*/, PyObject* /*kwargs*/) ++ { ++ named_exp_data& data = *t(self)->data; ++ if (!data.tokens) ++diff --git a/src/python/named_expressions.cpp b/src/python/named_expressions.cpp ++index 235389ac..6faffee5 100644 ++--- a/src/python/named_expressions.cpp +++++ b/src/python/named_expressions.cpp ++@@ -44,7 +44,7 @@ inline pyobj_named_exps* t(PyObject* self) ++ return reinterpret_cast<pyobj_named_exps*>(self); ++ } ++ ++-PyObject* named_exps_names(PyObject* self, PyObject* args, PyObject* kwargs) +++PyObject* named_exps_names(PyObject* self, PyObject* /*args*/, PyObject* /*kwargs*/) ++ { ++ named_exps_data& data = *t(self)->data; ++ PyObject* s = PySet_New(nullptr); ++@@ -64,7 +64,7 @@ void tp_dealloc(pyobj_named_exps* self) ++ Py_TYPE(self)->tp_free(reinterpret_cast<PyObject*>(self)); ++ } ++ ++-int tp_init(pyobj_named_exps* self, PyObject* /*args*/, PyObject* /*kwargs*/) +++int tp_init(pyobj_named_exps* /*self*/, PyObject* /*args*/, PyObject* /*kwargs*/) ++ { ++ return 0; ++ } ++diff --git a/src/python/sheet.cpp b/src/python/sheet.cpp ++index 0ccc39bd..38b96241 100644 ++--- a/src/python/sheet.cpp +++++ b/src/python/sheet.cpp ++@@ -85,12 +85,12 @@ PyObject* tp_new(PyTypeObject* type, PyObject* /*args*/, PyObject* /*kwargs*/) ++ return reinterpret_cast<PyObject*>(self); ++ } ++ ++-int tp_init(pyobj_sheet* self, PyObject* /*args*/, PyObject* /*kwargs*/) +++int tp_init(pyobj_sheet* /*self*/, PyObject* /*args*/, PyObject* /*kwargs*/) ++ { ++ return 0; ++ } ++ ++-PyObject* sheet_get_rows(PyObject* self, PyObject* args, PyObject* kwargs) +++PyObject* sheet_get_rows(PyObject* self, PyObject* /*args*/, PyObject* /*kwargs*/) ++ { ++ PyTypeObject* sr_type = get_sheet_rows_type(); ++ ++@@ -210,7 +210,7 @@ PyObject* sheet_write(PyObject* self, PyObject* args, PyObject* kwargs) ++ return Py_None; ++ } ++ ++-PyObject* sheet_get_named_expressions(PyObject* self, PyObject* args, PyObject* kwargs) +++PyObject* sheet_get_named_expressions(PyObject* self, PyObject* /*args*/, PyObject* /*kwargs*/) ++ { ++ const ss::document& doc = *t(self)->data->m_doc; ++ ss::sheet_t si = t(self)->data->m_sheet->get_index(); ++diff --git a/src/python/sheet_rows.cpp b/src/python/sheet_rows.cpp ++index 7fa869ea..be495894 100644 ++--- a/src/python/sheet_rows.cpp +++++ b/src/python/sheet_rows.cpp ++@@ -49,7 +49,7 @@ PyObject* sheet_rows_new(PyTypeObject* type, PyObject* /*args*/, PyObject* /*kwa ++ return reinterpret_cast<PyObject*>(self); ++ } ++ ++-int sheet_rows_init(pyobj_sheet_rows* self, PyObject* /*args*/, PyObject* /*kwargs*/) +++int sheet_rows_init(pyobj_sheet_rows* /*self*/, PyObject* /*args*/, PyObject* /*kwargs*/) ++ { ++ return 0; ++ } ++diff --git a/src/spreadsheet/factory_sheet.cpp b/src/spreadsheet/factory_sheet.cpp ++index 3e04295c..61541174 100644 ++--- a/src/spreadsheet/factory_sheet.cpp +++++ b/src/spreadsheet/factory_sheet.cpp ++@@ -74,19 +74,19 @@ void import_data_table::reset() ++ { ++ } ++ ++-void import_data_table::set_type(data_table_type_t type) +++void import_data_table::set_type(data_table_type_t /*type*/) ++ { ++ } ++ ++-void import_data_table::set_range(const range_t& range) +++void import_data_table::set_range(const range_t& /*range*/) ++ { ++ } ++ ++-void import_data_table::set_first_reference(std::string_view ref, bool deleted) +++void import_data_table::set_first_reference(std::string_view /*ref*/, bool /*deleted*/) ++ { ++ } ++ ++-void import_data_table::set_second_reference(std::string_view ref, bool deleted) +++void import_data_table::set_second_reference(std::string_view /*ref*/, bool /*deleted*/) ++ { ++ } ++ ++@@ -193,7 +193,7 @@ void import_array_formula::set_range(const range_t& range) ++ } ++ } ++ ++-void import_array_formula::set_formula(formula_grammar_t grammar, std::string_view formula) +++void import_array_formula::set_formula(formula_grammar_t /*grammar*/, std::string_view formula) ++ { ++ const ixion::formula_name_resolver* resolver = ++ m_doc.get_formula_name_resolver(spreadsheet::formula_ref_context_t::global); ++@@ -223,12 +223,12 @@ void import_array_formula::set_result_value(row_t row, col_t col, double value) ++ m_result_mtx.set(row, col, value); ++ } ++ ++-void import_array_formula::set_result_string(row_t row, col_t col, std::string_view value) +++void import_array_formula::set_result_string(row_t /*row*/, col_t /*col*/, std::string_view /*value*/) ++ { ++ // TODO : handle this ++ } ++ ++-void import_array_formula::set_result_empty(row_t row, col_t col) +++void import_array_formula::set_result_empty(row_t /*row*/, col_t /*col*/) ++ { ++ // TODO : handle this ++ } ++@@ -282,7 +282,7 @@ void import_formula::set_position(row_t row, col_t col) ++ m_col = col; ++ } ++ ++-void import_formula::set_formula(formula_grammar_t grammar, std::string_view formula) +++void import_formula::set_formula(formula_grammar_t /*grammar*/, std::string_view formula) ++ { ++ if (m_row < 0 || m_col < 0) ++ return; ++@@ -331,7 +331,7 @@ void import_formula::set_result_string(std::string_view value) ++ } ++ ++ void import_formula::set_result_empty() {} ++-void import_formula::set_result_bool(bool value) {} +++void import_formula::set_result_bool(bool /*value*/) {} ++ ++ void import_formula::commit() ++ { ++diff --git a/src/spreadsheet/sheet_impl.cpp b/src/spreadsheet/sheet_impl.cpp ++index 72e521c5..c2e7ecb6 100644 ++--- a/src/spreadsheet/sheet_impl.cpp +++++ b/src/spreadsheet/sheet_impl.cpp ++@@ -12,7 +12,7 @@ ++ ++ namespace orcus { namespace spreadsheet { ++ ++-sheet_impl::sheet_impl(document& doc, sheet& sh, sheet_t sheet_index) : +++sheet_impl::sheet_impl(document& doc, sheet& /*sh*/, sheet_t sheet_index) : ++ m_doc(doc), ++ m_col_widths(0, m_doc.get_sheet_size().columns, get_default_column_width()), ++ m_row_heights(0, m_doc.get_sheet_size().rows, get_default_row_height()), ++-- ++2.25.1 ++ +diff --git a/external/liborcus/std-get-busted.patch.1 b/external/liborcus/std-get-busted.patch.1 +new file mode 100644 +index 000000000000..40b839f65f47 +--- /dev/null ++++ b/external/liborcus/std-get-busted.patch.1 +@@ -0,0 +1,418 @@ ++From f917ed284c52ae12fb0d752c17141f355158470e Mon Sep 17 00:00:00 2001 ++From: Kohei Yoshida <kohei.yoshida@gmail.com> ++Date: Tue, 2 Nov 2021 22:07:51 -0400 ++Subject: [PATCH] std::get<T>(...) may be flaky with some version of clang. ++ ++As workaround, use boost::variant and boost::get. ++ ++c.f. https://stackoverflow.com/questions/52521388/stdvariantget-does-not-compile-with-apple-llvm-10-0 ++--- ++ include/orcus/config.hpp | 4 ++-- ++ include/orcus/css_selector.hpp | 5 +++-- ++ include/orcus/json_parser_thread.hpp | 4 ++-- ++ include/orcus/sax_token_parser_thread.hpp | 5 +++-- ++ include/orcus/spreadsheet/pivot.hpp | 7 ++++--- ++ include/orcus/threaded_json_parser.hpp | 8 ++++---- ++ include/orcus/threaded_sax_token_parser.hpp | 8 ++++---- ++ src/liborcus/css_document_tree.cpp | 2 +- ++ src/liborcus/css_selector.cpp | 12 ++++++------ ++ src/liborcus/orcus_csv.cpp | 4 ++-- ++ src/orcus_csv_main.cpp | 2 +- ++ src/orcus_test_csv.cpp | 8 ++++---- ++ src/orcus_test_xlsx.cpp | 4 ++-- ++ src/parser/json_parser_thread.cpp | 8 ++++---- ++ src/python/sheet_rows.cpp | 3 +++ ++ 15 files changed, 45 insertions(+), 39 deletions(-) ++ ++diff --git a/include/orcus/config.hpp b/include/orcus/config.hpp ++index 17743e6a..fe9a7d81 100644 ++--- a/include/orcus/config.hpp +++++ b/include/orcus/config.hpp ++@@ -12,7 +12,7 @@ ++ #include "orcus/types.hpp" ++ ++ #include <string> ++-#include <variant> +++#include <boost/variant.hpp> ++ ++ namespace orcus { ++ ++@@ -37,7 +37,7 @@ struct ORCUS_DLLPUBLIC config ++ }; ++ ++ // TODO: add config for other formats as needed. ++- using data_type = std::variant<csv_config>; +++ using data_type = boost::variant<csv_config>; ++ ++ /** ++ * Enable or disable runtime debug output to stdout or stderr. ++diff --git a/include/orcus/css_selector.hpp b/include/orcus/css_selector.hpp ++index 1e41d544..dafeddf5 100644 ++--- a/include/orcus/css_selector.hpp +++++ b/include/orcus/css_selector.hpp ++@@ -12,11 +12,12 @@ ++ #include "css_types.hpp" ++ ++ #include <ostream> ++-#include <variant> ++ #include <vector> ++ #include <unordered_set> ++ #include <unordered_map> ++ +++#include <boost/variant.hpp> +++ ++ namespace orcus { ++ ++ struct ORCUS_DLLPUBLIC css_simple_selector_t ++@@ -73,7 +74,7 @@ struct ORCUS_DLLPUBLIC css_selector_t ++ */ ++ struct ORCUS_DLLPUBLIC css_property_value_t ++ { ++- using value_type = std::variant<std::string_view, css::rgba_color_t, css::hsla_color_t>; +++ using value_type = boost::variant<std::string_view, css::rgba_color_t, css::hsla_color_t>; ++ ++ css::property_value_t type; ++ value_type value; ++diff --git a/include/orcus/json_parser_thread.hpp b/include/orcus/json_parser_thread.hpp ++index 8328ef11..565008da 100644 ++--- a/include/orcus/json_parser_thread.hpp +++++ b/include/orcus/json_parser_thread.hpp ++@@ -14,7 +14,7 @@ ++ #include <memory> ++ #include <vector> ++ #include <ostream> ++-#include <variant> +++#include <boost/variant.hpp> ++ ++ namespace orcus { ++ ++@@ -47,7 +47,7 @@ enum class parse_token_t ++ ++ struct ORCUS_PSR_DLLPUBLIC parse_token ++ { ++- using value_type = std::variant<std::string_view, parse_error_value_t, double>; +++ using value_type = boost::variant<std::string_view, parse_error_value_t, double>; ++ ++ parse_token_t type; ++ value_type value; ++diff --git a/include/orcus/sax_token_parser_thread.hpp b/include/orcus/sax_token_parser_thread.hpp ++index b3645735..e0842013 100644 ++--- a/include/orcus/sax_token_parser_thread.hpp +++++ b/include/orcus/sax_token_parser_thread.hpp ++@@ -12,10 +12,11 @@ ++ #include "types.hpp" ++ ++ #include <memory> ++-#include <variant> ++ #include <vector> ++ #include <ostream> ++ +++#include <boost/variant.hpp> +++ ++ namespace orcus { ++ ++ class tokens; ++@@ -36,7 +37,7 @@ enum class parse_token_t ++ ++ struct ORCUS_PSR_DLLPUBLIC parse_token ++ { ++- using value_type = std::variant<std::string_view, parse_error_value_t, const xml_token_element_t*>; +++ using value_type = boost::variant<std::string_view, parse_error_value_t, const xml_token_element_t*>; ++ ++ parse_token_t type; ++ value_type value; ++diff --git a/include/orcus/spreadsheet/pivot.hpp b/include/orcus/spreadsheet/pivot.hpp ++index dee25596..fa091160 100644 ++--- a/include/orcus/spreadsheet/pivot.hpp +++++ b/include/orcus/spreadsheet/pivot.hpp ++@@ -15,9 +15,10 @@ ++ #include <memory> ++ #include <vector> ++ #include <limits> ++-#include <variant> ++ #include <optional> ++ +++#include <boost/variant.hpp> +++ ++ namespace ixion { ++ ++ struct abs_range_t; ++@@ -36,7 +37,7 @@ using pivot_cache_indices_t = std::vector<size_t>; ++ ++ struct ORCUS_SPM_DLLPUBLIC pivot_cache_record_value_t ++ { ++- using value_type = std::variant<bool, double, std::size_t, std::string_view, date_time_t>; +++ using value_type = boost::variant<bool, double, std::size_t, std::string_view, date_time_t>; ++ ++ enum class record_type ++ { ++@@ -66,7 +67,7 @@ using pivot_cache_record_t = std::vector<pivot_cache_record_value_t>; ++ ++ struct ORCUS_SPM_DLLPUBLIC pivot_cache_item_t ++ { ++- using value_type = std::variant<bool, double, std::string_view, date_time_t, error_value_t>; +++ using value_type = boost::variant<bool, double, std::string_view, date_time_t, error_value_t>; ++ ++ enum class item_type ++ { ++diff --git a/include/orcus/threaded_json_parser.hpp b/include/orcus/threaded_json_parser.hpp ++index 51cdaced..3bf6e591 100644 ++--- a/include/orcus/threaded_json_parser.hpp +++++ b/include/orcus/threaded_json_parser.hpp ++@@ -151,23 +151,23 @@ void threaded_json_parser<_Handler>::process_tokens(json::parse_tokens_t& tokens ++ m_handler.null(); ++ break; ++ case json::parse_token_t::number: ++- m_handler.number(std::get<double>(t.value)); +++ m_handler.number(boost::get<double>(t.value)); ++ break; ++ case json::parse_token_t::object_key: ++ { ++- auto s = std::get<std::string_view>(t.value); +++ auto s = boost::get<std::string_view>(t.value); ++ m_handler.object_key(s.data(), s.size(), false); ++ break; ++ } ++ case json::parse_token_t::string: ++ { ++- auto s = std::get<std::string_view>(t.value); +++ auto s = boost::get<std::string_view>(t.value); ++ m_handler.string(s.data(), s.size(), false); ++ break; ++ } ++ case json::parse_token_t::parse_error: ++ { ++- auto v = std::get<parse_error_value_t>(t.value); +++ auto v = boost::get<parse_error_value_t>(t.value); ++ throw json::parse_error(std::string{v.str}, v.offset); ++ } ++ case json::parse_token_t::unknown: ++diff --git a/include/orcus/threaded_sax_token_parser.hpp b/include/orcus/threaded_sax_token_parser.hpp ++index 59ea967a..1b389be2 100644 ++--- a/include/orcus/threaded_sax_token_parser.hpp +++++ b/include/orcus/threaded_sax_token_parser.hpp ++@@ -131,25 +131,25 @@ void threaded_sax_token_parser<_Handler>::process_tokens(const sax::parse_tokens ++ { ++ case sax::parse_token_t::start_element: ++ { ++- const auto* elem = std::get<const xml_token_element_t*>(t.value); +++ const auto* elem = boost::get<const xml_token_element_t*>(t.value); ++ m_handler.start_element(*elem); ++ break; ++ } ++ case sax::parse_token_t::end_element: ++ { ++- const auto* elem = std::get<const xml_token_element_t*>(t.value); +++ const auto* elem = boost::get<const xml_token_element_t*>(t.value); ++ m_handler.end_element(*elem); ++ break; ++ } ++ case sax::parse_token_t::characters: ++ { ++- auto s = std::get<std::string_view>(t.value); +++ auto s = boost::get<std::string_view>(t.value); ++ m_handler.characters(s, false); ++ break; ++ } ++ case sax::parse_token_t::parse_error: ++ { ++- auto v = std::get<parse_error_value_t>(t.value); +++ auto v = boost::get<parse_error_value_t>(t.value); ++ throw sax::malformed_xml_error(std::string{v.str}, v.offset); ++ } ++ default: ++diff --git a/src/liborcus/css_document_tree.cpp b/src/liborcus/css_document_tree.cpp ++index 46bf7e91..4b44edff 100644 ++--- a/src/liborcus/css_document_tree.cpp +++++ b/src/liborcus/css_document_tree.cpp ++@@ -317,7 +317,7 @@ public: ++ { ++ // String value needs interning. ++ css_property_value_t interned = v; ++- auto s = std::get<std::string_view>(v.value); +++ auto s = boost::get<std::string_view>(v.value); ++ interned.value = m_sp.intern(s).first; ++ m_dest.push_back(interned); ++ break; ++diff --git a/src/liborcus/css_selector.cpp b/src/liborcus/css_selector.cpp ++index b7b63f37..de522062 100644 ++--- a/src/liborcus/css_selector.cpp +++++ b/src/liborcus/css_selector.cpp ++@@ -155,7 +155,7 @@ std::ostream& operator<< (std::ostream& os, const css_property_value_t& v) ++ { ++ case css::property_value_t::hsl: ++ { ++- auto c = std::get<css::hsla_color_t>(v.value); +++ auto c = boost::get<css::hsla_color_t>(v.value); ++ os << "hsl(" ++ << (int)c.hue << sep ++ << (int)c.saturation << sep ++@@ -165,7 +165,7 @@ std::ostream& operator<< (std::ostream& os, const css_property_value_t& v) ++ } ++ case css::property_value_t::hsla: ++ { ++- auto c = std::get<css::hsla_color_t>(v.value); +++ auto c = boost::get<css::hsla_color_t>(v.value); ++ os << "hsla(" ++ << (int)c.hue << sep ++ << (int)c.saturation << sep ++@@ -176,7 +176,7 @@ std::ostream& operator<< (std::ostream& os, const css_property_value_t& v) ++ } ++ case css::property_value_t::rgb: ++ { ++- auto c = std::get<css::rgba_color_t>(v.value); +++ auto c = boost::get<css::rgba_color_t>(v.value); ++ os << "rgb(" ++ << (int)c.red << sep ++ << (int)c.green << sep ++@@ -186,7 +186,7 @@ std::ostream& operator<< (std::ostream& os, const css_property_value_t& v) ++ } ++ case css::property_value_t::rgba: ++ { ++- auto c = std::get<css::rgba_color_t>(v.value); +++ auto c = boost::get<css::rgba_color_t>(v.value); ++ os << "rgba(" ++ << (int)c.red << sep ++ << (int)c.green << sep ++@@ -196,10 +196,10 @@ std::ostream& operator<< (std::ostream& os, const css_property_value_t& v) ++ break; ++ } ++ case css::property_value_t::string: ++- os << std::get<std::string_view>(v.value); +++ os << boost::get<std::string_view>(v.value); ++ break; ++ case css::property_value_t::url: ++- os << "url(" << std::get<std::string_view>(v.value) << ")"; +++ os << "url(" << boost::get<std::string_view>(v.value) << ")"; ++ break; ++ case css::property_value_t::none: ++ default: ++diff --git a/src/liborcus/orcus_csv.cpp b/src/liborcus/orcus_csv.cpp ++index 5c71bcf5..637308ab 100644 ++--- a/src/liborcus/orcus_csv.cpp +++++ b/src/liborcus/orcus_csv.cpp ++@@ -63,7 +63,7 @@ public: ++ // 0. ++ if (m_row >= mp_sheet->get_sheet_size().rows) ++ { ++- auto csv = std::get<config::csv_config>(m_app_config.data); +++ auto csv = boost::get<config::csv_config>(m_app_config.data); ++ ++ if (!csv.split_to_multiple_sheets) ++ throw max_row_size_reached(); ++@@ -93,7 +93,7 @@ public: ++ ++ void cell(const char* p, size_t n, bool transient) ++ { ++- auto csv = std::get<config::csv_config>(m_app_config.data); +++ auto csv = boost::get<config::csv_config>(m_app_config.data); ++ ++ if (m_sheet == 0 && size_t(m_row) < csv.header_row_size) ++ { ++diff --git a/src/orcus_csv_main.cpp b/src/orcus_csv_main.cpp ++index 4f6d7173..446f2684 100644 ++--- a/src/orcus_csv_main.cpp +++++ b/src/orcus_csv_main.cpp ++@@ -45,7 +45,7 @@ public: ++ ++ virtual void map_to_config(config& opt, const po::variables_map& vm) override ++ { ++- auto csv = std::get<config::csv_config>(opt.data); +++ auto csv = boost::get<config::csv_config>(opt.data); ++ ++ if (vm.count("row-header")) ++ csv.header_row_size = vm["row-header"].as<size_t>(); ++diff --git a/src/orcus_test_csv.cpp b/src/orcus_test_csv.cpp ++index 310ace9d..0b9ba994 100644 ++--- a/src/orcus_test_csv.cpp +++++ b/src/orcus_test_csv.cpp ++@@ -95,8 +95,8 @@ void test_csv_import_split_sheet() ++ std::cout << "checking " << path << "..." << std::endl; ++ ++ config conf(format_t::csv); ++- std::get<config::csv_config>(conf.data).header_row_size = 0; ++- std::get<config::csv_config>(conf.data).split_to_multiple_sheets = true; +++ boost::get<config::csv_config>(conf.data).header_row_size = 0; +++ boost::get<config::csv_config>(conf.data).split_to_multiple_sheets = true; ++ ++ // Set the row size to 11 to make sure the split occurs. ++ spreadsheet::range_size_t ss{11, 4}; ++@@ -126,7 +126,7 @@ void test_csv_import_split_sheet() ++ path = dir; ++ path.append("input.csv"); ++ doc.clear(); ++- std::get<config::csv_config>(conf.data).header_row_size = 1; +++ boost::get<config::csv_config>(conf.data).header_row_size = 1; ++ { ++ spreadsheet::import_factory factory(doc); ++ orcus_csv app(&factory); ++@@ -149,7 +149,7 @@ void test_csv_import_split_sheet() ++ ++ // Re-import it again, but this time disable the splitting. The data should ++ // get trucated on the first sheet. ++- std::get<config::csv_config>(conf.data).split_to_multiple_sheets = false; +++ boost::get<config::csv_config>(conf.data).split_to_multiple_sheets = false; ++ ++ path = dir; ++ path.append("input.csv"); ++diff --git a/src/orcus_test_xlsx.cpp b/src/orcus_test_xlsx.cpp ++index 807c61e4..632fb1e7 100644 ++--- a/src/orcus_test_xlsx.cpp +++++ b/src/orcus_test_xlsx.cpp ++@@ -1154,8 +1154,8 @@ void test_xlsx_pivot_group_by_numbers() ++ for (const pivot_cache_item_t& item : fld->items) ++ { ++ assert(item.type == pivot_cache_item_t::item_type::numeric); ++- assert(*fld->min_value <= std::get<double>(item.value)); ++- assert(std::get<double>(item.value) <= *fld->max_value); +++ assert(*fld->min_value <= boost::get<double>(item.value)); +++ assert(boost::get<double>(item.value) <= *fld->max_value); ++ } ++ ++ // This field is also gruop field with 7 numeric intervals of width 2. ++diff --git a/src/parser/json_parser_thread.cpp b/src/parser/json_parser_thread.cpp ++index 36bbe6e6..65fb6255 100644 ++--- a/src/parser/json_parser_thread.cpp +++++ b/src/parser/json_parser_thread.cpp ++@@ -237,19 +237,19 @@ std::ostream& operator<< (std::ostream& os, const parse_tokens_t& tokens) ++ os << "- null" << endl; ++ break; ++ case parse_token_t::number: ++- os << "- number (v=" << std::get<double>(t.value) << ")" << endl; +++ os << "- number (v=" << boost::get<double>(t.value) << ")" << endl; ++ break; ++ case parse_token_t::object_key: ++- os << "- object_key (v=" << std::get<std::string_view>(t.value) << ")" << endl; +++ os << "- object_key (v=" << boost::get<std::string_view>(t.value) << ")" << endl; ++ break; ++ case parse_token_t::parse_error: ++ { ++- auto v = std::get<parse_error_value_t>(t.value); +++ auto v = boost::get<parse_error_value_t>(t.value); ++ os << "- parse_error (v=" << v.str << ", offset=" << v.offset << ")" << endl; ++ break; ++ } ++ case parse_token_t::string: ++- os << "- string (" << std::get<std::string_view>(t.value) << ")" << endl; +++ os << "- string (" << boost::get<std::string_view>(t.value) << ")" << endl; ++ break; ++ case parse_token_t::unknown: ++ os << "- unknown" << endl; ++diff --git a/src/python/sheet_rows.cpp b/src/python/sheet_rows.cpp ++index be495894..0d21ba71 100644 ++--- a/src/python/sheet_rows.cpp +++++ b/src/python/sheet_rows.cpp ++@@ -135,7 +135,10 @@ PyObject* sheet_rows_iternext(PyObject* self) ++ break; ++ } ++ case ixion::celltype_t::unknown: +++ { +++ PyErr_SetString(PyExc_RuntimeError, "Unknown cell type."); ++ break; +++ } ++ } ++ ++ if (!obj) ++-- ++2.25.1 ++ +diff --git a/external/liborcus/unused-variables.patch.1 b/external/liborcus/unused-variables.patch.1 +new file mode 100644 +index 000000000000..77b88fae288c +--- /dev/null ++++ b/external/liborcus/unused-variables.patch.1 +@@ -0,0 +1,24 @@ ++From 5fccafa297ce2439ee850e13ccbeea3edb1750af Mon Sep 17 00:00:00 2001 ++From: Kohei Yoshida <kohei.yoshida@gmail.com> ++Date: Tue, 2 Nov 2021 20:42:45 -0400 ++Subject: [PATCH] Unused variables. ++ ++--- ++ include/orcus/sax_parser.hpp | 1 - ++ 1 file changed, 1 deletion(-) ++ ++diff --git a/include/orcus/sax_parser.hpp b/include/orcus/sax_parser.hpp ++index 24b1e8ea..15e8d917 100644 ++--- a/include/orcus/sax_parser.hpp +++++ b/include/orcus/sax_parser.hpp ++@@ -539,7 +539,6 @@ template<typename _Handler, typename _Config> ++ void sax_parser<_Handler,_Config>::attribute() ++ { ++ sax::parser_attribute attr; ++- std::string_view attr_ns_name, attr_name, attr_value; ++ attribute_name(attr.ns, attr.name); ++ ++ #if ORCUS_DEBUG_SAX_PARSER ++-- ++2.25.1 ++ +diff --git a/external/mdds/UnpackedTarball_mdds.mk b/external/mdds/UnpackedTarball_mdds.mk +index 3c664336430b..cf5bd48a1eb6 100644 +--- a/external/mdds/UnpackedTarball_mdds.mk ++++ b/external/mdds/UnpackedTarball_mdds.mk +@@ -13,11 +13,9 @@ $(eval $(call gb_UnpackedTarball_set_tarball,mdds,$(MDDS_TARBALL))) + + $(eval $(call gb_UnpackedTarball_set_patchlevel,mdds,0)) + +-# * external/mdds/Wunused-but-set-variable.patch upstream at +-# <https://gitlab.com/mdds/mdds/-/merge_requests/29> "-Werror,-Wunused-but-set-variable (Clang 13 +-# trunk)": + $(eval $(call gb_UnpackedTarball_add_patches,mdds,\ +- external/mdds/Wunused-but-set-variable.patch \ ++ external/mdds/remove-unused-parameters.patch.1 \ ++ external/mdds/remove-more-unused-parameters.patch.1 \ + )) + + # vim: set noet sw=4 ts=4: +diff --git a/external/mdds/Wunused-but-set-variable.patch b/external/mdds/Wunused-but-set-variable.patch +deleted file mode 100644 +index ba28cb18eded..000000000000 +--- a/external/mdds/Wunused-but-set-variable.patch ++++ /dev/null +@@ -1,46 +0,0 @@ +---- include/mdds/multi_type_vector_def.inl +-+++ include/mdds/multi_type_vector_def.inl +-@@ -843,18 +843,12 @@ +- typename multi_type_vector<_CellBlockFunc, _EventFunc>::iterator +- multi_type_vector<_CellBlockFunc, _EventFunc>::push_back_empty() +- { +-- size_type last_block_size = 0; +-- if (!m_blocks.empty()) +-- last_block_size = m_blocks.back().m_size; +-- +- size_type block_index = m_blocks.size(); +-- size_type start_pos = m_cur_size; +- +- if (!append_empty(1)) +- { +- // Last empty block has been extended. +- --block_index; +-- start_pos -= last_block_size; +- } +- +- // Get the iterator of the last block. +-@@ -3923,8 +3917,6 @@ +- size_type offset = start_row - start_row_in_block1; +- size_type end_row_in_block2 = start_row_in_block2 + blk2->m_size - 1; +- +-- size_type start_row_itr = start_row_in_block1; +-- +- // Initially set to erase blocks between block 1 and block 2 non-inclusive at either end. +- typename blocks_type::iterator it_erase_begin = m_blocks.begin() + block_index1 + 1; +- typename blocks_type::iterator it_erase_end = m_blocks.begin() + block_index2; +-@@ -3948,7 +3940,6 @@ +- data_blk.mp_data = blk0->mp_data; +- blk0->mp_data = nullptr; +- +-- start_row_itr -= blk0->m_size; +- data_blk.m_size += blk0->m_size; +- data_blk.m_position = blk0->m_position; +- +-@@ -3967,7 +3958,6 @@ +- element_block_func::resize_block(*blk1->mp_data, offset); +- } +- blk1->m_size = offset; +-- start_row_itr += offset; +- } +- +- if (blk0_copied) +diff --git a/external/mdds/remove-more-unused-parameters.patch.1 b/external/mdds/remove-more-unused-parameters.patch.1 +new file mode 100644 +index 000000000000..c0c29471c9ed +--- /dev/null ++++ b/external/mdds/remove-more-unused-parameters.patch.1 +@@ -0,0 +1,42 @@ ++From cc24c84d35274aead5afe574c87ecd6368aa5e2a Mon Sep 17 00:00:00 2001 ++From: Kohei Yoshida <kohei.yoshida@gmail.com> ++Date: Tue, 2 Nov 2021 18:24:30 -0400 ++Subject: [PATCH] More unused parameters. ++ ++I personally cannot reproduce the warnings. But The android x86 build ++of LibreOffice generates the following build warnings: ++ ++In file included from /home/tdf/lode/jenkins/workspace/android_x86/svl/source/misc/gridprinter.cxx:16: ++In file included from /home/tdf/lode/jenkins/workspace/android_x86/workdir/UnpackedTarball/mdds/include/mdds/multi_type_matrix.hpp:37: ++In file included from /home/tdf/lode/jenkins/workspace/android_x86/workdir/UnpackedTarball/mdds/include/mdds/multi_type_vector.hpp:31: ++In file included from /home/tdf/lode/jenkins/workspace/android_x86/workdir/UnpackedTarball/mdds/include/mdds/./multi_type_vector/soa/main.hpp:35: ++/home/tdf/lode/jenkins/workspace/android_x86/workdir/UnpackedTarball/mdds/include/mdds/./multi_type_vector/soa/./block_util.hpp:49:27: error: unused parameter 'block_store' [-Werror,-Wunused-parameter] ++ void operator()(Blks& block_store, int64_t start_block_index, int64_t delta) const ++ ^ ++/home/tdf/lode/jenkins/workspace/android_x86/workdir/UnpackedTarball/mdds/include/mdds/./multi_type_vector/soa/./block_util.hpp:49:48: error: unused parameter 'start_block_index' [-Werror,-Wunused-parameter] ++ void operator()(Blks& block_store, int64_t start_block_index, int64_t delta) const ++ ^ ++/home/tdf/lode/jenkins/workspace/android_x86/workdir/UnpackedTarball/mdds/include/mdds/./multi_type_vector/soa/./block_util.hpp:49:75: error: unused parameter 'delta' [-Werror,-Wunused-parameter] ++ void operator()(Blks& block_store, int64_t start_block_index, int64_t delta) const ++ ^ ++3 errors generated. ++--- ++ include/mdds/multi_type_vector/soa/block_util.hpp | 2 +- ++ 1 file changed, 1 insertion(+), 1 deletion(-) ++ ++diff --git a/include/mdds/multi_type_vector/soa/block_util.hpp b/include/mdds/multi_type_vector/soa/block_util.hpp ++index d10ee67..73ba27c 100644 ++--- a/include/mdds/multi_type_vector/soa/block_util.hpp +++++ b/include/mdds/multi_type_vector/soa/block_util.hpp ++@@ -46,7 +46,7 @@ namespace detail { ++ template<typename Blks, lu_factor_t F> ++ struct adjust_block_positions ++ { ++- void operator()(Blks& block_store, int64_t start_block_index, int64_t delta) const +++ void operator()(Blks& /*block_store*/, int64_t /*start_block_index*/, int64_t /*delta*/) const ++ { ++ static_assert(invalid_static_int<F>, "The loop-unrolling factor must be one of 0, 4, 8, 16, or 32."); ++ } ++-- ++2.25.1 ++ +diff --git a/external/mdds/remove-unused-parameters.patch.1 b/external/mdds/remove-unused-parameters.patch.1 +new file mode 100644 +index 000000000000..ebfc94fbf107 +--- /dev/null ++++ b/external/mdds/remove-unused-parameters.patch.1 +@@ -0,0 +1,93 @@ ++From 695e4c73fb55b1002237b0a22f13162c5c91aa68 Mon Sep 17 00:00:00 2001 ++From: Kohei Yoshida <kohei.yoshida@gmail.com> ++Date: Mon, 1 Nov 2021 14:54:36 -0400 ++Subject: [PATCH] Remove unused parameter warnings in public headers. ++ ++--- ++ include/mdds/multi_type_vector/util.hpp | 10 ++++++++-- ++ include/mdds/trie_map_def.inl | 12 ++++++------ ++ 2 files changed, 14 insertions(+), 8 deletions(-) ++ ++diff --git a/include/mdds/multi_type_vector/util.hpp b/include/mdds/multi_type_vector/util.hpp ++index d21e302..a1cb1f9 100644 ++--- a/include/mdds/multi_type_vector/util.hpp +++++ b/include/mdds/multi_type_vector/util.hpp ++@@ -51,7 +51,10 @@ struct empty_event_func ++ * ++ * @param block pointer to the acquired element block instance. ++ */ ++- void element_block_acquired(const base_element_block* block) {} +++ void element_block_acquired(const base_element_block* block) +++ { +++ (void)block; +++ } ++ ++ /** ++ * Callback function for element block release events. This gets called ++@@ -61,7 +64,10 @@ struct empty_event_func ++ * ++ * @param block pointer to the element block instance being released. ++ */ ++- void element_block_released(const base_element_block* block) {} +++ void element_block_released(const base_element_block* block) +++ { +++ (void)block; +++ } ++ }; ++ ++ /** ++diff --git a/include/mdds/trie_map_def.inl b/include/mdds/trie_map_def.inl ++index 49e6de0..be18aec 100644 ++--- a/include/mdds/trie_map_def.inl +++++ b/include/mdds/trie_map_def.inl ++@@ -1004,7 +1004,7 @@ packed_trie_map<_KeyTrait,_ValueT>::packed_trie_map(const packed_trie_map& other ++ { ++ packed_trie_map& m_parent; ++ ++- void node(const uintptr_t* node_pos, key_unit_type c, size_t depth, size_t index_size) +++ void node(const uintptr_t* node_pos, key_unit_type /*c*/, size_t /*depth*/, size_t /*index_size*/) ++ { ++ uintptr_t value_ptr = *node_pos; ++ ++@@ -1315,13 +1315,13 @@ void packed_trie_map<_KeyTrait,_ValueT>::save_state(std::ostream& os) const ++ } ++ ++ /** first element in the buffer. */ ++- void root_offset(size_t i, const uintptr_t& v) const +++ void root_offset(size_t /*i*/, const uintptr_t& v) const ++ { ++ write(v); ++ } ++ ++ /** first element in each node section. */ ++- void node_value(size_t i, const uintptr_t& v) const +++ void node_value(size_t /*i*/, const uintptr_t& v) const ++ { ++ const value_type* p = reinterpret_cast<const value_type*>(v); ++ if (p) ++@@ -1348,19 +1348,19 @@ void packed_trie_map<_KeyTrait,_ValueT>::save_state(std::ostream& os) const ++ * second element in each node section that stores the size of ++ * the child data sub-section. ++ */ ++- void node_index_size(size_t i, const uintptr_t& v) const +++ void node_index_size(size_t /*i*/, const uintptr_t& v) const ++ { ++ write(v); ++ } ++ ++ /** element that stores the key value for child node. */ ++- void node_child_key(size_t i, const uintptr_t& v) const +++ void node_child_key(size_t /*i*/, const uintptr_t& v) const ++ { ++ write(v); ++ } ++ ++ /** element that stores the relative offset of the child node. */ ++- void node_child_offset(size_t i, const uintptr_t& v) const +++ void node_child_offset(size_t /*i*/, const uintptr_t& v) const ++ { ++ write(v); ++ } ++-- ++2.25.1 ++ +diff --git a/sc/inc/mtvelements.hxx b/sc/inc/mtvelements.hxx +index a6c4d5ffa7c7..636706e0c234 100644 +--- a/sc/inc/mtvelements.hxx ++++ b/sc/inc/mtvelements.hxx +@@ -24,10 +24,10 @@ + #define MDDS_MULTI_TYPE_VECTOR_DEBUG 1 + #endif + +-#include <mdds/multi_type_vector_macro.hpp> +-#include <mdds/multi_type_vector.hpp> +-#include <mdds/multi_type_vector_custom_func1.hpp> +-#include <mdds/multi_type_vector_custom_func3.hpp> ++#include <mdds/multi_type_vector/macro.hpp> ++#include <mdds/multi_type_vector/soa/main.hpp> ++#include <mdds/multi_type_vector/custom_func1.hpp> ++#include <mdds/multi_type_vector/custom_func3.hpp> + + #include <unordered_map> + #include <memory> +@@ -97,21 +97,27 @@ public: + void element_block_released(const mdds::mtv::base_element_block* block); + }; + ++struct CellStoreTrait ++{ ++ using event_func = CellStoreEvent; ++ static constexpr mdds::mtv::lu_factor_t loop_unrolling = mdds::mtv::lu_factor_t::lu16; ++}; ++ + /// Cell note container + typedef mdds::mtv::custom_block_func1<sc::cellnote_block> CNoteFunc; +-typedef mdds::multi_type_vector<CNoteFunc> CellNoteStoreType; ++typedef mdds::mtv::soa::multi_type_vector<CNoteFunc> CellNoteStoreType; + + /// Broadcaster storage container + typedef mdds::mtv::custom_block_func1<sc::broadcaster_block> BCBlkFunc; +-typedef mdds::multi_type_vector<BCBlkFunc> BroadcasterStoreType; ++typedef mdds::mtv::soa::multi_type_vector<BCBlkFunc> BroadcasterStoreType; + + /// Cell text attribute container. + typedef mdds::mtv::custom_block_func1<sc::celltextattr_block> CTAttrFunc; +-typedef mdds::multi_type_vector<CTAttrFunc> CellTextAttrStoreType; ++typedef mdds::mtv::soa::multi_type_vector<CTAttrFunc> CellTextAttrStoreType; + + /// Cell container + typedef mdds::mtv::custom_block_func3<sc::string_block, sc::edittext_block, sc::formula_block> CellFunc; +-typedef mdds::multi_type_vector<CellFunc, CellStoreEvent> CellStoreType; ++typedef mdds::mtv::soa::multi_type_vector<CellFunc, CellStoreTrait> CellStoreType; + + /** + * Store position data for column array storage. +diff --git a/sc/source/filter/inc/orcusinterface.hxx b/sc/source/filter/inc/orcusinterface.hxx +index 060456733fbc..935854c46e3f 100644 +--- a/sc/source/filter/inc/orcusinterface.hxx ++++ b/sc/source/filter/inc/orcusinterface.hxx +@@ -75,8 +75,8 @@ class ScOrcusRefResolver : public orcus::spreadsheet::iface::import_reference_re + public: + ScOrcusRefResolver( const ScOrcusGlobalSettings& rGS ); + +- orcus::spreadsheet::src_address_t resolve_address(const char* p, size_t n) override; +- orcus::spreadsheet::src_range_t resolve_range(const char* p, size_t n) override; ++ orcus::spreadsheet::src_address_t resolve_address(std::string_view address) override; ++ orcus::spreadsheet::src_range_t resolve_range(std::string_view range) override; + }; + + class ScOrcusNamedExpression : public orcus::spreadsheet::iface::import_named_expression +@@ -94,8 +94,8 @@ public: + void reset(); + + virtual void set_base_position(const orcus::spreadsheet::src_address_t& pos) override; +- virtual void set_named_expression(const char* p_name, size_t n_name, const char* p_exp, size_t n_exp) override; +- virtual void set_named_range(const char* p_name, size_t n_name, const char* p_range, size_t n_range) override; ++ virtual void set_named_expression(std::string_view name, std::string_view expression) override; ++ virtual void set_named_range(std::string_view name, std::string_view range) override; + virtual void commit() override; + }; + +@@ -107,19 +107,19 @@ class ScOrcusSharedStrings : public orcus::spreadsheet::iface::import_shared_str + public: + ScOrcusSharedStrings(ScOrcusFactory& rFactory); + +- virtual size_t append(const char* s, size_t n) override; +- virtual size_t add(const char* s, size_t n) override; ++ virtual size_t append(std::string_view s) override; ++ virtual size_t add(std::string_view s) override; + + virtual void set_segment_bold(bool b) override; + virtual void set_segment_italic(bool b) override; + virtual void set_segment_font(size_t font_index) override; +- virtual void set_segment_font_name(const char* s, size_t n) override; ++ virtual void set_segment_font_name(std::string_view s) override; + virtual void set_segment_font_size(double point) override; + virtual void set_segment_font_color(orcus::spreadsheet::color_elem_t alpha, + orcus::spreadsheet::color_elem_t red, + orcus::spreadsheet::color_elem_t green, + orcus::spreadsheet::color_elem_t blue) override; +- virtual void append_segment(const char* s, size_t n) override; ++ virtual void append_segment(std::string_view s) override; + + virtual size_t commit_segments() override; + }; +@@ -133,7 +133,7 @@ public: + virtual void set_color(orcus::spreadsheet::color_elem_t alpha, orcus::spreadsheet::color_elem_t red, + orcus::spreadsheet::color_elem_t green, orcus::spreadsheet::color_elem_t blue) override; + +- virtual void set_formula(const char* p, size_t n) override; ++ virtual void set_formula(std::string_view formula) override; + + virtual void set_condition_type(orcus::spreadsheet::condition_type_t type) override; + +@@ -141,7 +141,7 @@ public: + + virtual void commit_condition() override; + +- virtual void set_icon_name(const char* p, size_t n) override; ++ virtual void set_icon_name(std::string_view name) override; + + virtual void set_databar_gradient(bool gradient) override; + +@@ -169,7 +169,7 @@ public: + + virtual void commit_entry() override; + +- virtual void set_range(const char* p, size_t n) override; ++ virtual void set_range(std::string_view range) override; + + virtual void set_range(orcus::spreadsheet::row_t row_start, orcus::spreadsheet::col_t col_start, + orcus::spreadsheet::row_t row_end, orcus::spreadsheet::col_t col_end) override; +@@ -197,7 +197,7 @@ public: + + virtual void set_column(orcus::spreadsheet::col_t col) override; + +- virtual void append_column_match_value(const char* p, size_t n) override; ++ virtual void append_column_match_value(std::string_view value) override; + + virtual void commit_column() override; + +@@ -243,7 +243,7 @@ class ScOrcusFormula : public orcus::spreadsheet::iface::import_formula + bool mbShared; + + ResultType meResType; +- size_t mnResult; // result string index. ++ OUString maResult; // result string. + double mfResult; + + void reset(); +@@ -253,10 +253,10 @@ public: + virtual ~ScOrcusFormula() override; + + virtual void set_position(orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col) override; +- virtual void set_formula(orcus::spreadsheet::formula_grammar_t grammar, const char* p, size_t n) override; ++ virtual void set_formula(orcus::spreadsheet::formula_grammar_t grammar, std::string_view formula) override; + virtual void set_shared_formula_index(size_t index) override; + virtual void set_result_value(double value) override; +- virtual void set_result_string(size_t sindex) override; ++ virtual void set_result_string(std::string_view value) override; + virtual void set_result_empty() override; + virtual void set_result_bool(bool value) override; + virtual void commit() override; +@@ -282,9 +282,9 @@ public: + virtual ~ScOrcusArrayFormula() override; + + virtual void set_range(const orcus::spreadsheet::range_t& range) override; +- virtual void set_formula(orcus::spreadsheet::formula_grammar_t grammar, const char* p, size_t n) override; ++ virtual void set_formula(orcus::spreadsheet::formula_grammar_t grammar, std::string_view formula) override; + virtual void set_result_value(orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, double value) override; +- virtual void set_result_string(orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, size_t sindex) override; ++ virtual void set_result_string(orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, std::string_view value) override; + virtual void set_result_empty(orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col) override; + virtual void set_result_bool(orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, bool value) override; + virtual void commit() override; +@@ -326,8 +326,8 @@ public: + virtual orcus::spreadsheet::iface::import_array_formula* get_array_formula() override; + + // Orcus import interface +- virtual void set_auto(orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, const char* p, size_t n) override; +- virtual void set_string(orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, size_t sindex) override; ++ virtual void set_auto(orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, std::string_view value) override; ++ virtual void set_string(orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, orcus::spreadsheet::string_id_t sindex) override; + virtual void set_value(orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, double value) override; + virtual void set_bool(orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, bool value) override; + virtual void set_date_time( +@@ -491,7 +491,7 @@ public: + virtual void set_font_count(size_t n) override; + virtual void set_font_bold(bool b) override; + virtual void set_font_italic(bool b) override; +- virtual void set_font_name(const char* s, size_t n) override; ++ virtual void set_font_name(std::string_view name) override; + virtual void set_font_size(double point) override; + virtual void set_font_underline(orcus::spreadsheet::underline_t e) override; + virtual void set_font_underline_width(orcus::spreadsheet::underline_width_t e) override; +@@ -542,7 +542,7 @@ public: + // number format + virtual void set_number_format_count(size_t n) override; + virtual void set_number_format_identifier(size_t n) override; +- virtual void set_number_format_code(const char* s, size_t n) override; ++ virtual void set_number_format_code(std::string_view s) override; + virtual size_t commit_number_format() override; + + // cell style xf +@@ -574,10 +574,10 @@ public: + // cell style entry + + virtual void set_cell_style_count(size_t n) override; +- virtual void set_cell_style_name(const char* s, size_t n) override; ++ virtual void set_cell_style_name(std::string_view name) override; + virtual void set_cell_style_xf(size_t index) override; + virtual void set_cell_style_builtin(size_t index) override; +- virtual void set_cell_style_parent_name(const char* s, size_t n) override; ++ virtual void set_cell_style_parent_name(std::string_view name) override; + virtual size_t commit_cell_style() override; + }; + +@@ -639,8 +639,8 @@ public: + ScOrcusFactory(ScDocument& rDoc, bool bSkipDefaultStyles=false); + + virtual orcus::spreadsheet::iface::import_sheet* append_sheet( +- orcus::spreadsheet::sheet_t sheet_index, const char *sheet_name, size_t sheet_name_length) override; +- virtual orcus::spreadsheet::iface::import_sheet* get_sheet(const char *sheet_name, size_t sheet_name_length) override; ++ orcus::spreadsheet::sheet_t sheet_index, std::string_view sheet_name) override; ++ virtual orcus::spreadsheet::iface::import_sheet* get_sheet(std::string_view sheet_name) override; + virtual orcus::spreadsheet::iface::import_sheet* get_sheet(orcus::spreadsheet::sheet_t sheet_index) override; + virtual orcus::spreadsheet::iface::import_global_settings* get_global_settings() override; + virtual orcus::spreadsheet::iface::import_shared_strings* get_shared_strings() override; +diff --git a/sc/source/filter/orcus/interface.cxx b/sc/source/filter/orcus/interface.cxx +index 0947b5dd650c..63926a72fc59 100644 +--- a/sc/source/filter/orcus/interface.cxx ++++ b/sc/source/filter/orcus/interface.cxx +@@ -161,9 +161,9 @@ orcus::spreadsheet::formula_grammar_t ScOrcusGlobalSettings::get_default_formula + ScOrcusRefResolver::ScOrcusRefResolver( const ScOrcusGlobalSettings& rGS ) : + mrGlobalSettings(rGS) {} + +-os::src_address_t ScOrcusRefResolver::resolve_address(const char* p, size_t n) ++os::src_address_t ScOrcusRefResolver::resolve_address(std::string_view address) + { +- OUString aStr(p, n, mrGlobalSettings.getTextEncoding()); ++ OUString aStr(address.data(), address.size(), mrGlobalSettings.getTextEncoding()); + + ScAddress aAddr; + aAddr.Parse(aStr, mrGlobalSettings.getDoc().getDoc(), +@@ -173,7 +173,7 @@ os::src_address_t ScOrcusRefResolver::resolve_address(const char* p, size_t n) + if (!aAddr.IsValid()) + { + std::ostringstream os; +- os << "'" << std::string(p, n) << "' is not a valid address expression."; ++ os << "'" << address << "' is not a valid address expression."; + throw orcus::invalid_arg_error(os.str()); + } + +@@ -185,9 +185,9 @@ os::src_address_t ScOrcusRefResolver::resolve_address(const char* p, size_t n) + return ret; + } + +-os::src_range_t ScOrcusRefResolver::resolve_range(const char* p, size_t n) ++os::src_range_t ScOrcusRefResolver::resolve_range(std::string_view range) + { +- OUString aStr(p, n, mrGlobalSettings.getTextEncoding()); ++ OUString aStr(range.data(), range.size(), mrGlobalSettings.getTextEncoding()); + + ScRange aRange; + aRange.Parse(aStr, mrGlobalSettings.getDoc().getDoc(), +@@ -197,7 +197,7 @@ os::src_range_t ScOrcusRefResolver::resolve_range(const char* p, size_t n) + if (!aRange.IsValid()) + { + std::ostringstream os; +- os << "'" << std::string(p, n) << "' is not a valid range expression."; ++ os << "'" << range << "' is not a valid range expression."; + throw orcus::invalid_arg_error(os.str()); + } + +@@ -232,13 +232,13 @@ void ScOrcusNamedExpression::set_base_position(const orcus::spreadsheet::src_add + maBasePos.SetRow(pos.row); + } + +-void ScOrcusNamedExpression::set_named_expression(const char* p_name, size_t n_name, const char* p_exp, size_t n_exp) ++void ScOrcusNamedExpression::set_named_expression(std::string_view name, std::string_view expression) + { +- maName = OUString(p_name, n_name, mrGlobalSettings.getTextEncoding()); +- maExpr = OUString(p_exp, n_exp, mrGlobalSettings.getTextEncoding()); ++ maName = OUString(name.data(), name.size(), mrGlobalSettings.getTextEncoding()); ++ maExpr = OUString(expression.data(), expression.size(), mrGlobalSettings.getTextEncoding()); + } + +-void ScOrcusNamedExpression::set_named_range(const char* /*p_name*/, size_t /*n_name*/, const char* /*p_range*/, size_t /*n_range*/) ++void ScOrcusNamedExpression::set_named_range(std::string_view /*name*/, std::string_view /*range*/) + { + throw std::runtime_error("ScOrcusNamedExpression::set_named_range not implemented yet."); + } +@@ -309,9 +309,9 @@ ScOrcusFactory::ScOrcusFactory(ScDocument& rDoc, bool bSkipDefaultStyles) : + mnProgress(0) {} + + orcus::spreadsheet::iface::import_sheet* ScOrcusFactory::append_sheet( +- orcus::spreadsheet::sheet_t sheet_index, const char* sheet_name, size_t sheet_name_length) ++ orcus::spreadsheet::sheet_t sheet_index, std::string_view sheet_name) + { +- OUString aTabName(sheet_name, sheet_name_length, maGlobalSettings.getTextEncoding()); ++ OUString aTabName(sheet_name.data(), sheet_name.size(), maGlobalSettings.getTextEncoding()); + + if (sheet_index == 0) + { +@@ -345,9 +345,9 @@ public: + + } + +-orcus::spreadsheet::iface::import_sheet* ScOrcusFactory::get_sheet(const char* sheet_name, size_t sheet_name_length) ++orcus::spreadsheet::iface::import_sheet* ScOrcusFactory::get_sheet(std::string_view sheet_name) + { +- OUString aTabName(sheet_name, sheet_name_length, maGlobalSettings.getTextEncoding()); ++ OUString aTabName(sheet_name.data(), sheet_name.size(), maGlobalSettings.getTextEncoding()); + SCTAB nTab = maDoc.getSheetIndex(aTabName); + if (nTab < 0) + // Sheet by that name not found. +@@ -777,7 +777,7 @@ void ScOrcusConditionalFormat::set_condition_type(os::condition_type_t /*type*/) + SAL_INFO("sc.orcus.condformat", "set_condition_type"); + } + +-void ScOrcusConditionalFormat::set_formula(const char* /*p*/, size_t /*n*/) ++void ScOrcusConditionalFormat::set_formula(std::string_view /*formula*/) + { + SAL_INFO("sc.orcus.condformat", "set_formula"); + } +@@ -793,7 +793,7 @@ void ScOrcusConditionalFormat::commit_condition() + SAL_INFO("sc.orcus.condformat", "commit_condition"); + } + +-void ScOrcusConditionalFormat::set_icon_name(const char* /*p*/, size_t /*n*/) ++void ScOrcusConditionalFormat::set_icon_name(std::string_view /*name*/) + { + assert(meEntryType == ScFormatEntry::Type::Iconset); + SAL_INFO("sc.orcus.condformat", "set_icon_name"); +@@ -887,7 +887,7 @@ void ScOrcusConditionalFormat::commit_entry() + SAL_INFO("sc.orcus.condformat", "commit_entry"); + } + +-void ScOrcusConditionalFormat::set_range(const char* /*p*/, size_t /*n*/) ++void ScOrcusConditionalFormat::set_range(std::string_view /*range*/) + { + SAL_INFO("sc.orcus.condformat", "set_range"); + } +@@ -930,7 +930,7 @@ void ScOrcusFormula::reset() + mnSharedFormulaIndex = 0; + mbShared = false; + meResType = ResultType::NotSet; +- mnResult = 0; ++ maResult.clear(); + mfResult = 0.0; + } + +@@ -942,7 +942,6 @@ ScOrcusFormula::ScOrcusFormula( ScOrcusSheet& rSheet ) : + mnSharedFormulaIndex(0), + mbShared(false), + meResType(ResultType::NotSet), +- mnResult(0), + mfResult(0.0) {} + + ScOrcusFormula::~ScOrcusFormula() {} +@@ -953,9 +952,9 @@ void ScOrcusFormula::set_position(os::row_t row, os::col_t col) + mnRow = row; + } + +-void ScOrcusFormula::set_formula(os::formula_grammar_t grammar, const char* p, size_t n) ++void ScOrcusFormula::set_formula(os::formula_grammar_t grammar, std::string_view formula) + { +- maFormula = OUString(p, n, mrSheet.getFactory().getGlobalSettings().getTextEncoding()); ++ maFormula = OUString(formula.data(), formula.size(), mrSheet.getFactory().getGlobalSettings().getTextEncoding()); + meGrammar = getCalcGrammarFromOrcus(grammar); + } + +@@ -971,10 +970,10 @@ void ScOrcusFormula::set_result_value(double value) + mfResult = value; + } + +-void ScOrcusFormula::set_result_string(size_t sindex) ++void ScOrcusFormula::set_result_string(std::string_view value) + { + meResType = ResultType::String; +- mnResult = sindex; ++ maResult = OUString(value.data(), value.size(), mrSheet.getFactory().getGlobalSettings().getTextEncoding()); + } + + void ScOrcusFormula::set_result_empty() +@@ -1028,9 +1027,7 @@ void ScOrcusFormula::commit() + { + case ResultType::String: + { +- const OUString* pStr = rFactory.getString(mnResult); +- if (pStr) +- rFactory.pushFormulaResult(aPos, *pStr); ++ rFactory.pushFormulaResult(aPos, maResult); + break; + } + case ResultType::Value: +@@ -1073,10 +1070,10 @@ void ScOrcusArrayFormula::set_range(const os::range_t& range) + mnRowRange = range.last.row - range.first.column + 1; + } + +-void ScOrcusArrayFormula::set_formula(os::formula_grammar_t grammar, const char* p, size_t n) ++void ScOrcusArrayFormula::set_formula(os::formula_grammar_t grammar, std::string_view formula) + { + meGrammar = getCalcGrammarFromOrcus(grammar); +- maFormula = OUString(p, n, mrSheet.getFactory().getGlobalSettings().getTextEncoding()); ++ maFormula = OUString(formula.data(), formula.size(), mrSheet.getFactory().getGlobalSettings().getTextEncoding()); + } + + void ScOrcusArrayFormula::set_result_value(os::row_t /*row*/, os::col_t /*col*/, double /*value*/) +@@ -1084,7 +1081,7 @@ void ScOrcusArrayFormula::set_result_value(os::row_t /*row*/, os::col_t /*col*/, + // TODO : implement result cache for matrix + } + +-void ScOrcusArrayFormula::set_result_string(os::row_t /*row*/, os::col_t /*col*/, size_t /*sindex*/) ++void ScOrcusArrayFormula::set_result_string(os::row_t /*row*/, os::col_t /*col*/, std::string_view /*value*/) + { + // TODO : implement result cache for matrix + } +@@ -1158,16 +1155,16 @@ os::iface::import_array_formula* ScOrcusSheet::get_array_formula() + return &maArrayFormula; + } + +-void ScOrcusSheet::set_auto(os::row_t row, os::col_t col, const char* p, size_t n) ++void ScOrcusSheet::set_auto(os::row_t row, os::col_t col, std::string_view value) + { +- OUString aVal(p, n, mrFactory.getGlobalSettings().getTextEncoding()); ++ OUString aVal(value.data(), value.size(), mrFactory.getGlobalSettings().getTextEncoding()); + mrFactory.pushCellStoreAutoToken(ScAddress(col, row, mnTab), aVal); + cellInserted(); + } + +-void ScOrcusSheet::set_string(os::row_t row, os::col_t col, size_t sindex) ++void ScOrcusSheet::set_string(os::row_t row, os::col_t col, os::string_id_t sindex) + { +- mrFactory.pushCellStoreToken(ScAddress(col, row, mnTab), uint32_t(sindex)); ++ mrFactory.pushCellStoreToken(ScAddress(col, row, mnTab), sindex); + cellInserted(); + } + +@@ -1257,15 +1254,15 @@ ScOrcusFactory& ScOrcusSheet::getFactory() + ScOrcusSharedStrings::ScOrcusSharedStrings(ScOrcusFactory& rFactory) : + mrFactory(rFactory) {} + +-size_t ScOrcusSharedStrings::append(const char* s, size_t n) ++size_t ScOrcusSharedStrings::append(std::string_view s) + { +- OUString aNewString(s, n, mrFactory.getGlobalSettings().getTextEncoding()); ++ OUString aNewString(s.data(), s.size(), mrFactory.getGlobalSettings().getTextEncoding()); + return mrFactory.appendString(aNewString); + } + +-size_t ScOrcusSharedStrings::add(const char* s, size_t n) ++size_t ScOrcusSharedStrings::add(std::string_view s) + { +- OUString aNewString(s, n, mrFactory.getGlobalSettings().getTextEncoding()); ++ OUString aNewString(s.data(), s.size(), mrFactory.getGlobalSettings().getTextEncoding()); + return mrFactory.addString(aNewString); + } + +@@ -1281,7 +1278,7 @@ void ScOrcusSharedStrings::set_segment_italic(bool /*b*/) + { + } + +-void ScOrcusSharedStrings::set_segment_font_name(const char* /*s*/, size_t /*n*/) ++void ScOrcusSharedStrings::set_segment_font_name(std::string_view /*s*/) + { + } + +@@ -1296,9 +1293,9 @@ void ScOrcusSharedStrings::set_segment_font_color(orcus::spreadsheet::color_elem + { + } + +-void ScOrcusSharedStrings::append_segment(const char* s, size_t n) ++void ScOrcusSharedStrings::append_segment(std::string_view s) + { +- maCurSegment.append(s, n); ++ maCurSegment.append(s.data(), s.size()); + } + + size_t ScOrcusSharedStrings::commit_segments() +@@ -1610,9 +1607,9 @@ void ScOrcusStyles::set_font_italic(bool b) + maCurrentFont.mbHasFontAttr = true; + } + +-void ScOrcusStyles::set_font_name(const char* s, size_t n) ++void ScOrcusStyles::set_font_name(std::string_view name) + { +- OUString aName(s, n, mrFactory.getGlobalSettings().getTextEncoding()); ++ OUString aName(name.data(), name.size(), mrFactory.getGlobalSettings().getTextEncoding()); + maCurrentFont.maName = aName; + maCurrentFont.mbHasFontAttr = true; + } +@@ -1985,9 +1982,9 @@ void ScOrcusStyles::set_number_format_identifier(size_t) + { + } + +-void ScOrcusStyles::set_number_format_code(const char* s, size_t n) ++void ScOrcusStyles::set_number_format_code(std::string_view s) + { +- OUString aCode(s, n, mrFactory.getGlobalSettings().getTextEncoding()); ++ OUString aCode(s.data(), s.size(), mrFactory.getGlobalSettings().getTextEncoding()); + maCurrentNumberFormat.maCode = aCode; + maCurrentNumberFormat.mbHasNumberFormatAttr = true; + } +@@ -2141,9 +2138,9 @@ void ScOrcusStyles::set_cell_style_count(size_t /*n*/) + // needed at all? + } + +-void ScOrcusStyles::set_cell_style_name(const char* s, size_t n) ++void ScOrcusStyles::set_cell_style_name(std::string_view name) + { +- OUString aName(s, n, mrFactory.getGlobalSettings().getTextEncoding()); ++ OUString aName(name.data(), name.size(), mrFactory.getGlobalSettings().getTextEncoding()); + maCurrentCellStyle.maName = aName; + } + +@@ -2158,9 +2155,9 @@ void ScOrcusStyles::set_cell_style_builtin(size_t index) + maCurrentCellStyle.mnBuiltInId = index; + } + +-void ScOrcusStyles::set_cell_style_parent_name(const char* s, size_t n) ++void ScOrcusStyles::set_cell_style_parent_name(std::string_view name) + { +- OUString aParentName(s, n, mrFactory.getGlobalSettings().getTextEncoding()); ++ OUString aParentName(name.data(), name.size(), mrFactory.getGlobalSettings().getTextEncoding()); + maCurrentCellStyle.maParentName = aParentName; + } + +@@ -2215,9 +2212,9 @@ void ScOrcusAutoFilter::set_column(orcus::spreadsheet::col_t col) + SAL_INFO("sc.orcus.autofilter", "set_column: " << col); + } + +-void ScOrcusAutoFilter::append_column_match_value(const char* p, size_t n) ++void ScOrcusAutoFilter::append_column_match_value(std::string_view value) + { +- OUString aString(p, n, mrGlobalSettings.getTextEncoding()); ++ OUString aString(value.data(), value.size(), mrGlobalSettings.getTextEncoding()); + SAL_INFO("sc.orcus.autofilter", "append_column_match_value: " << aString); + } + +diff --git a/sc/source/filter/orcus/orcusfiltersimpl.cxx b/sc/source/filter/orcus/orcusfiltersimpl.cxx +index f063bd3b5524..db2d5705d51e 100644 +--- a/sc/source/filter/orcus/orcusfiltersimpl.cxx ++++ b/sc/source/filter/orcus/orcusfiltersimpl.cxx +@@ -70,7 +70,7 @@ bool loadFileContent(SfxMedium& rMedium, orcus::iface::import_filter& filter) + + try + { +- filter.read_stream(aBuffer.getStr(), aBuffer.getLength()); ++ filter.read_stream(aBuffer); + } + catch (const std::exception& e) + { +@@ -148,14 +148,14 @@ bool ScOrcusFiltersImpl::importODS_Styles(ScDocument& rDoc, OUString& aPath) con + if (GetShortPathNameW(o3tl::toW(aPath.getStr()), buf, std::size(buf)) == 0) + throw; + aPath8 = OUStringToOString(o3tl::toU(buf), osl_getThreadTextEncoding()); +- content = std::make_unique<orcus::file_content>(aPath8.getStr()); ++ content = std::make_unique<orcus::file_content>(aPath8); + } + #else +- auto content = std::make_unique<orcus::file_content>(aPath8.getStr()); ++ auto content = std::make_unique<orcus::file_content>(aPath8); + #endif + ScOrcusFactory aFactory(rDoc); + ScOrcusStyles aStyles(aFactory); +- orcus::import_ods::read_styles(content->data(), content->size(), &aStyles); ++ orcus::import_ods::read_styles(content->str(), &aStyles); + } + catch (const std::exception& e) + { +diff --git a/sc/source/filter/orcus/xmlcontext.cxx b/sc/source/filter/orcus/xmlcontext.cxx +index 1f3ee58220a0..9c73a75436bf 100644 +--- a/sc/source/filter/orcus/xmlcontext.cxx ++++ b/sc/source/filter/orcus/xmlcontext.cxx +@@ -63,7 +63,7 @@ OUString toString(const orcus::xml_structure_tree::entity_name& entity, const or + aBuf.appendAscii(aShortName.c_str()); + aBuf.append(':'); + } +- aBuf.append(OUString(entity.name.get(), entity.name.size(), RTL_TEXTENCODING_UTF8)); ++ aBuf.append(OUString(entity.name.data(), entity.name.size(), RTL_TEXTENCODING_UTF8)); + return aBuf.makeStringAndClear(); + } + +@@ -175,7 +175,7 @@ void ScOrcusXMLContextImpl::loadXMLStructure(weld::TreeView& rTreeCtrl, ScOrcusX + orcus::xml_structure_tree aXmlTree(cxt); + try + { +- aXmlTree.parse(&aStrm[0], aStrm.size()); ++ aXmlTree.parse(aStrm); + + TreeUpdateSwitch aSwitch(rTreeCtrl); + rTreeCtrl.clear(); +@@ -265,14 +265,14 @@ void ScOrcusXMLContextImpl::importXML(const ScOrcusImportXMLParam& rParam) + std::for_each(rLink.maFieldPaths.begin(), rLink.maFieldPaths.end(), + [&filter](const OString& rFieldPath) + { +- filter.append_field_link(rFieldPath.getStr(), orcus::pstring()); ++ filter.append_field_link(rFieldPath, std::string_view()); + } + ); + + std::for_each(rLink.maRowGroups.begin(), rLink.maRowGroups.end(), + [&filter] (const OString& rRowGroup) + { +- filter.set_range_row_group(rRowGroup.getStr()); ++ filter.set_range_row_group(rRowGroup); + } + ); + +@@ -280,7 +280,7 @@ void ScOrcusXMLContextImpl::importXML(const ScOrcusImportXMLParam& rParam) + } + + orcus::file_content content(path); +- filter.read_stream(content.data(), content.size()); ++ filter.read_stream(content.str()); + + aFactory.finalize(); + } +diff --git a/sfx2/source/control/emojiview.cxx b/sfx2/source/control/emojiview.cxx +index 7475263044e2..f125552296e4 100644 +--- a/sfx2/source/control/emojiview.cxx ++++ b/sfx2/source/control/emojiview.cxx +@@ -21,7 +21,6 @@ + + #include <orcus/json_document_tree.hpp> + #include <orcus/config.hpp> +-#include <orcus/pstring.hpp> + #include <string> + #include <string_view> + #include <fstream> +@@ -122,7 +121,7 @@ void EmojiView::Populate() + aEmojiInfo.load(msJSONData, config); + + node root = aEmojiInfo.get_document_root(); +- std::vector<orcus::pstring> keys = root.keys(); ++ std::vector<std::string_view> keys = root.keys(); + + for (auto const& key : keys) + { +@@ -131,7 +130,7 @@ void EmojiView::Populate() + if(value.type() == orcus::json::node_t::object) + { + // iterate each element to get the keys +- std::vector<orcus::pstring> aEmojiParams = value.keys(); ++ std::vector<std::string_view> aEmojiParams = value.keys(); + OUString sTitle, sCategory, sName; + bool bDuplicate = false; + +@@ -142,15 +141,15 @@ void EmojiView::Populate() + // get values of parameters in AppendItem() function + if(emojiParam == "unicode") + { +- sTitle = OStringToOUString(std::string_view( prop.string_value().get(), prop.string_value().size() ), RTL_TEXTENCODING_UTF8); ++ sTitle = OStringToOUString(prop.string_value(), RTL_TEXTENCODING_UTF8); + } + else if(emojiParam == "category") + { +- sCategory = OStringToOUString(std::string_view( prop.string_value().get(), prop.string_value().size() ), RTL_TEXTENCODING_UTF8); ++ sCategory = OStringToOUString(prop.string_value(), RTL_TEXTENCODING_UTF8); + } + else if(emojiParam == "name") + { +- sName = OStringToOUString(std::string_view( prop.string_value().get(), prop.string_value().size() ), RTL_TEXTENCODING_UTF8); ++ sName = OStringToOUString(prop.string_value(), RTL_TEXTENCODING_UTF8); + } + else if(emojiParam == "duplicate") + { +diff --git a/solenv/flatpak-manifest.in b/solenv/flatpak-manifest.in +index 295b31b1d3ae..1460ae5b9a5d 100644 +--- a/solenv/flatpak-manifest.in ++++ b/solenv/flatpak-manifest.in +@@ -397,11 +397,11 @@ + "dest-filename": "mariadb-connector-c-3.1.8-src.tar.gz" + }, + { +- "url": "https://dev-www.libreoffice.org/src/mdds-1.7.0.tar.bz2", +- "sha256": "a66a2a8293a3abc6cd9baff7c236156e2666935cbfb69a15d64d38141638fecf", ++ "url": "https://dev-www.libreoffice.org/src/mdds-2.0.0.tar.bz2", ++ "sha256": "5a0fb2dd88a6420e0a69ec4c7259bcd1fe8f4a80b232c150e11f3da4c68236d7", + "type": "file", + "dest": "external/tarballs", +- "dest-filename": "mdds-1.7.0.tar.bz2" ++ "dest-filename": "mdds-2.0.0.tar.bz2" + }, + { + "url": "https://dev-www.libreoffice.org/src/neon-0.31.2.tar.gz", +@@ -425,11 +425,11 @@ + "dest-filename": "openldap-2.4.59.tgz" + }, + { +- "url": "https://dev-www.libreoffice.org/src/liborcus-0.16.1.tar.bz2", +- "sha256": "c700d1325f744104d9fca0d5a019434901e9d51a16eedfb05792f90a298587a4", ++ "url": "https://dev-www.libreoffice.org/src/liborcus-0.17.0.tar.bz2", ++ "sha256": "2ef9d2b5ee374c683cf631b78356b110510ab895788a68d778e225d8c4176d1b", + "type": "file", + "dest": "external/tarballs", +- "dest-filename": "liborcus-0.16.1.tar.bz2" ++ "dest-filename": "liborcus-0.17.0.tar.bz2" + }, + { + "url": "https://dev-www.libreoffice.org/src/poppler-21.11.0.tar.xz", +-- +cgit v1.2.1 + +From 23214f1c14c4d3981dad90b6e3ba6e4ca2c8c30e Mon Sep 17 00:00:00 2001 +From: Kohei Yoshida <kohei@libreoffice.org> +Date: Thu, 4 Nov 2021 09:58:35 -0400 +Subject: Blind fix for ubusan error + +from https://ci.libreoffice.org/job/lo_ubsan/2189/ + + [_RUN_____] Test::testCellBroadcaster +[...] + ==24129==ERROR: AddressSanitizer: heap-use-after-free on address 0x61700006c470 at pc 0x2ab6e05145e4 bp 0x7ffecaa28d70 sp 0x7ffecaa28d68 + READ of size 8 at 0x61700006c470 thread T0 + #0 0x2ab6e05145e3 in sc::CellStoreEvent::element_block_released(mdds::mtv::base_element_block const*) /sc/source/core/data/mtvelements.cxx:47:13 + #1 0x2ab6de749427 in mdds::mtv::soa::multi_type_vector<mdds::mtv::custom_block_func3<mdds::mtv::default_element_block<52, svl::SharedString>, mdds::mtv::noncopyable_managed_element_block<53, EditTextObject>, mdds::mtv::noncopyable_managed_element_block<54, ScFormulaCell> >, sc::CellStoreTrait>::delete_element_block(unsigned long) /workdir/UnpackedTarball/mdds/include/mdds/multi_type_vector/soa/main_def.inl:403:17 + #2 0x2ab6de74921b in mdds::mtv::soa::multi_type_vector<mdds::mtv::custom_block_func3<mdds::mtv::default_element_block<52, svl::SharedString>, mdds::mtv::noncopyable_managed_element_block<53, EditTextObject>, mdds::mtv::noncopyable_managed_element_block<54, ScFormulaCell> >, sc::CellStoreTrait>::delete_element_blocks(unsigned long, unsigned long) /workdir/UnpackedTarball/mdds/include/mdds/multi_type_vector/soa/main_def.inl:412:9 + #3 0x2ab6de733225 in mdds::mtv::soa::multi_type_vector<mdds::mtv::custom_block_func3<mdds::mtv::default_element_block<52, svl::SharedString>, mdds::mtv::noncopyable_managed_element_block<53, EditTextObject>, mdds::mtv::noncopyable_managed_element_block<54, ScFormulaCell> >, sc::CellStoreTrait>::clear() /workdir/UnpackedTarball/mdds/include/mdds/multi_type_vector/soa/main_def.inl:1088:5 + #4 0x2ab6df024987 in ScColumn::FreeAll() /sc/source/core/data/column3.cxx:161:13 + #5 0x2ab6decff134 in ScColumn::~ScColumn() /sc/source/core/data/column.cxx:97:5 + #6 0x2ab6decf708a in o3tl::default_delete<ScColumn>::operator()(ScColumn*) /include/o3tl/deleter.hxx:55:38 + #7 0x2ab6decf5999 in std::unique_ptr<ScColumn, o3tl::default_delete<ScColumn> >::reset(ScColumn*) /home/tdf/lode/opt_private/gcc-7.3.0/lib/gcc/x86_64-pc-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/unique_ptr.h:376:4 + #8 0x2ab6decf4c8e in ScColContainer::Clear() /sc/source/core/data/colcontainer.cxx:42:21 + #9 0x2ab6decf4a84 in ScColContainer::~ScColContainer() /sc/source/core/data/colcontainer.cxx:33:5 + #10 0x2ab6e070e3c6 in ScTable::~ScTable() /sc/source/core/data/table1.cxx:344:1 + #11 0x2ab6df50abba in o3tl::default_delete<ScTable>::operator()(ScTable*) /include/o3tl/deleter.hxx:55:38 + #12 0x2ab6df4c3483 in std::unique_ptr<ScTable, o3tl::default_delete<ScTable> >::~unique_ptr() /home/tdf/lode/opt_private/gcc-7.3.0/lib/gcc/x86_64-pc-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/unique_ptr.h:268:4 + #13 0x2ab6df4dc87c in void std::_Destroy<std::unique_ptr<ScTable, o3tl::default_delete<ScTable> > >(std::unique_ptr<ScTable, o3tl::default_delete<ScTable> >*) /home/tdf/lode/opt_private/gcc-7.3.0/lib/gcc/x86_64-pc-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/stl_construct.h:98:19 + #14 0x2ab6df4dc7c6 in void std::_Destroy_aux<false>::__destroy<std::unique_ptr<ScTable, o3tl::default_delete<ScTable> >*>(std::unique_ptr<ScTable, o3tl::default_delete<ScTable> >*, std::unique_ptr<ScTable, o3tl::default_delete<ScTable> >*) /home/tdf/lode/opt_private/gcc-7.3.0/lib/gcc/x86_64-pc-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/stl_construct.h:108:6 + #15 0x2ab6df4dc744 in void std::_Destroy<std::unique_ptr<ScTable, o3tl::default_delete<ScTable> >*>(std::unique_ptr<ScTable, o3tl::default_delete<ScTable> >*, std::unique_ptr<ScTable, o3tl::default_delete<ScTable> >*) /home/tdf/lode/opt_private/gcc-7.3.0/lib/gcc/x86_64-pc-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/stl_construct.h:136:7 + #16 0x2ab6df4dc488 in void std::_Destroy<std::unique_ptr<ScTable, o3tl::default_delete<ScTable> >*, std::unique_ptr<ScTable, o3tl::default_delete<ScTable> > >(std::unique_ptr<ScTable, o3tl::default_delete<ScTable> >*, std::unique_ptr<ScTable, o3tl::default_delete<ScTable> >*, std::allocator<std::unique_ptr<ScTable, o3tl::default_delete<ScTable> > >&) /home/tdf/lode/opt_private/gcc-7.3.0/lib/gcc/x86_64-pc-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/stl_construct.h:206:7 + #17 0x2ab6df50df73 in std::__cxx1998::vector<std::unique_ptr<ScTable, o3tl::default_delete<ScTable> >, std::allocator<std::unique_ptr<ScTable, o3tl::default_delete<ScTable> > > >::_M_erase_at_end(std::unique_ptr<ScTable, o3tl::default_delete<ScTable> >*) /home/tdf/lode/opt_private/gcc-7.3.0/lib/gcc/x86_64-pc-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/stl_vector.h:1513:2 + #18 0x2ab6df70f5b0 in std::__cxx1998::vector<std::unique_ptr<ScTable, o3tl::default_delete<ScTable> >, std::allocator<std::unique_ptr<ScTable, o3tl::default_delete<ScTable> > > >::clear() /home/tdf/lode/opt_private/gcc-7.3.0/lib/gcc/x86_64-pc-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/stl_vector.h:1248:9 + #19 0x2ab6df70b5d4 in std::__debug::vector<std::unique_ptr<ScTable, o3tl::default_delete<ScTable> >, std::allocator<std::unique_ptr<ScTable, o3tl::default_delete<ScTable> > > >::clear() /home/tdf/lode/opt_private/gcc-7.3.0/lib/gcc/x86_64-pc-linux-gnu/7.3.0/../../../../include/c++/7.3.0/debug/vector:699:9 + #20 0x2ab6df704cb2 in ScDocument::Clear(bool) /sc/source/core/data/documen9.cxx:506:12 + #21 0x2ab6df490652 in ScDocument::~ScDocument() /sc/source/core/data/documen2.cxx:363:5 + #22 0x2ab6e363315d in ScDocShell::~ScDocShell() /sc/source/ui/docshell/docsh.cxx:2925:1 + #23 0x2ab6e363333b in ScDocShell::~ScDocShell() /sc/source/ui/docshell/docsh.cxx:2894:1 + #24 0x2ab6e3633514 in ScDocShell::~ScDocShell() /sc/source/ui/docshell/docsh.cxx:2894:1 + #25 0x2ab6de4f105d in SvRefBase::ReleaseRef() /include/tools/ref.hxx:163:29 + #26 0x2ab6de4a6259 in tools::SvRef<ScDocShell>::clear() /include/tools/ref.hxx:64:22 + #27 0x2ab6de2b1aaa in Test::closeDocShell(tools::SvRef<ScDocShell>&) /sc/qa/unit/ucalc.cxx:365:18 + #28 0x2ab6de2b2102 in Test::tearDown() /sc/qa/unit/ucalc.cxx:380:5 + #29 0x2ab6de543787 in CppUnit::TestCaller<Test>::tearDown() /workdir/UnpackedTarball/cppunit/include/cppunit/TestCaller.h:185:15 + #30 0x2ab69335765a in CppUnit::TestCaseMethodFunctor::operator()() const /workdir/UnpackedTarball/cppunit/src/cppunit/TestCase.cpp:32:5 + #31 0x2ab6ae4f3957 in (anonymous namespace)::Protector::protect(CppUnit::Functor const&, CppUnit::ProtectorContext const&) /test/source/vclbootstrapprotector.cxx:46:14 + #32 0x2ab693328cd7 in CppUnit::ProtectorChain::ProtectFunctor::operator()() const /workdir/UnpackedTarball/cppunit/src/cppunit/ProtectorChain.cpp:20:25 + #33 0x2ab6a2974ff7 in (anonymous namespace)::Prot::protect(CppUnit::Functor const&, CppUnit::ProtectorContext const&) /unotest/source/cpp/unobootstrapprotector/unobootstrapprotector.cxx:78:12 + #34 0x2ab693328cd7 in CppUnit::ProtectorChain::ProtectFunctor::operator()() const /workdir/UnpackedTarball/cppunit/src/cppunit/ProtectorChain.cpp:20:25 + #35 0x2ab69f4479c2 in (anonymous namespace)::Prot::protect(CppUnit::Functor const&, CppUnit::ProtectorContext const&) /unotest/source/cpp/unoexceptionprotector/unoexceptionprotector.cxx:62:16 + #36 0x2ab693328cd7 in CppUnit::ProtectorChain::ProtectFunctor::operator()() const /workdir/UnpackedTarball/cppunit/src/cppunit/ProtectorChain.cpp:20:25 + #37 0x2ab6932bfff4 in CppUnit::DefaultProtector::protect(CppUnit::Functor const&, CppUnit::ProtectorContext const&) /workdir/UnpackedTarball/cppunit/src/cppunit/DefaultProtector.cpp:15:12 + #38 0x2ab693328cd7 in CppUnit::ProtectorChain::ProtectFunctor::operator()() const /workdir/UnpackedTarball/cppunit/src/cppunit/ProtectorChain.cpp:20:25 + #39 0x2ab69332272c in CppUnit::ProtectorChain::protect(CppUnit::Functor const&, CppUnit::ProtectorContext const&) /workdir/UnpackedTarball/cppunit/src/cppunit/ProtectorChain.cpp:86:18 + #40 0x2ab6933c1b39 in CppUnit::TestResult::protect(CppUnit::Functor const&, CppUnit::Test*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /workdir/UnpackedTarball/cppunit/src/cppunit/TestResult.cpp:182:28 + #41 0x2ab693356092 in CppUnit::TestCase::run(CppUnit::TestResult*) /workdir/UnpackedTarball/cppunit/src/cppunit/TestCase.cpp:95:11 + #42 0x2ab693359af2 in CppUnit::TestComposite::doRunChildTests(CppUnit::TestResult*) /workdir/UnpackedTarball/cppunit/src/cppunit/TestComposite.cpp:64:30 + #43 0x2ab693358cea in CppUnit::TestComposite::run(CppUnit::TestResult*) /workdir/UnpackedTarball/cppunit/src/cppunit/TestComposite.cpp:23:3 + #44 0x2ab693359af2 in CppUnit::TestComposite::doRunChildTests(CppUnit::TestResult*) /workdir/UnpackedTarball/cppunit/src/cppunit/TestComposite.cpp:64:30 + #45 0x2ab693358cea in CppUnit::TestComposite::run(CppUnit::TestResult*) /workdir/UnpackedTarball/cppunit/src/cppunit/TestComposite.cpp:23:3 + #46 0x2ab6933ef6ce in CppUnit::TestRunner::WrappingSuite::run(CppUnit::TestResult*) /workdir/UnpackedTarball/cppunit/src/cppunit/TestRunner.cpp:47:27 + #47 0x2ab6933c059e in CppUnit::TestResult::runTest(CppUnit::Test*) /workdir/UnpackedTarball/cppunit/src/cppunit/TestResult.cpp:149:9 + #48 0x2ab6933f062b in CppUnit::TestRunner::run(CppUnit::TestResult&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /workdir/UnpackedTarball/cppunit/src/cppunit/TestRunner.cpp:96:14 + #49 0x4ff1d5 in (anonymous namespace)::ProtectedFixtureFunctor::run() const /sal/cppunittester/cppunittester.cxx:329:20 + #50 0x4fbbc5 in main2() /sal/cppunittester/cppunittester.cxx:478:16 + #51 0x4fa052 in sal_main() /sal/cppunittester/cppunittester.cxx:614:14 + #52 0x4f9e9e in main /sal/cppunittester/cppunittester.cxx:609:1 + #53 0x2ab69517d554 in __libc_start_main (/lib64/libc.so.6+0x22554) + #54 0x425894 in _start (/workdir/LinkTarget/Executable/cppunittester+0x425894) + + 0x61700006c470 is located 752 bytes inside of 768-byte region [0x61700006c180,0x61700006c480) + freed by thread T0 here: + #0 0x4f7548 in operator delete(void*, unsigned long) /home/tdf/lode/packages/llvm-llvmorg-9.0.1.src/compiler-rt/lib/asan/asan_new_delete.cc:172 + #1 0x2ab6decf709b in o3tl::default_delete<ScColumn>::operator()(ScColumn*) /include/o3tl/deleter.hxx:55:38 + #2 0x2ab6decf5999 in std::unique_ptr<ScColumn, o3tl::default_delete<ScColumn> >::reset(ScColumn*) /home/tdf/lode/opt_private/gcc-7.3.0/lib/gcc/x86_64-pc-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/unique_ptr.h:376:4 + #3 0x2ab6decf4c8e in ScColContainer::Clear() /sc/source/core/data/colcontainer.cxx:42:21 + #4 0x2ab6decf4a84 in ScColContainer::~ScColContainer() /sc/source/core/data/colcontainer.cxx:33:5 + #5 0x2ab6e070e3c6 in ScTable::~ScTable() /sc/source/core/data/table1.cxx:344:1 + #6 0x2ab6df50abba in o3tl::default_delete<ScTable>::operator()(ScTable*) /include/o3tl/deleter.hxx:55:38 + #7 0x2ab6df4c3483 in std::unique_ptr<ScTable, o3tl::default_delete<ScTable> >::~unique_ptr() /home/tdf/lode/opt_private/gcc-7.3.0/lib/gcc/x86_64-pc-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/unique_ptr.h:268:4 + #8 0x2ab6df4dc87c in void std::_Destroy<std::unique_ptr<ScTable, o3tl::default_delete<ScTable> > >(std::unique_ptr<ScTable, o3tl::default_delete<ScTable> >*) /home/tdf/lode/opt_private/gcc-7.3.0/lib/gcc/x86_64-pc-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/stl_construct.h:98:19 + #9 0x2ab6df4dc7c6 in void std::_Destroy_aux<false>::__destroy<std::unique_ptr<ScTable, o3tl::default_delete<ScTable> >*>(std::unique_ptr<ScTable, o3tl::default_delete<ScTable> >*, std::unique_ptr<ScTable, o3tl::default_delete<ScTable> >*) /home/tdf/lode/opt_private/gcc-7.3.0/lib/gcc/x86_64-pc-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/stl_construct.h:108:6 + #10 0x2ab6df4dc744 in void std::_Destroy<std::unique_ptr<ScTable, o3tl::default_delete<ScTable> >*>(std::unique_ptr<ScTable, o3tl::default_delete<ScTable> >*, std::unique_ptr<ScTable, o3tl::default_delete<ScTable> >*) /home/tdf/lode/opt_private/gcc-7.3.0/lib/gcc/x86_64-pc-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/stl_construct.h:136:7 + #11 0x2ab6df4dc488 in void std::_Destroy<std::unique_ptr<ScTable, o3tl::default_delete<ScTable> >*, std::unique_ptr<ScTable, o3tl::default_delete<ScTable> > >(std::unique_ptr<ScTable, o3tl::default_delete<ScTable> >*, std::unique_ptr<ScTable, o3tl::default_delete<ScTable> >*, std::allocator<std::unique_ptr<ScTable, o3tl::default_delete<ScTable> > >&) /home/tdf/lode/opt_private/gcc-7.3.0/lib/gcc/x86_64-pc-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/stl_construct.h:206:7 + #12 0x2ab6df50df73 in std::__cxx1998::vector<std::unique_ptr<ScTable, o3tl::default_delete<ScTable> >, std::allocator<std::unique_ptr<ScTable, o3tl::default_delete<ScTable> > > >::_M_erase_at_end(std::unique_ptr<ScTable, o3tl::default_delete<ScTable> >*) /home/tdf/lode/opt_private/gcc-7.3.0/lib/gcc/x86_64-pc-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/stl_vector.h:1513:2 + #13 0x2ab6df70f5b0 in std::__cxx1998::vector<std::unique_ptr<ScTable, o3tl::default_delete<ScTable> >, std::allocator<std::unique_ptr<ScTable, o3tl::default_delete<ScTable> > > >::clear() /home/tdf/lode/opt_private/gcc-7.3.0/lib/gcc/x86_64-pc-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/stl_vector.h:1248:9 + #14 0x2ab6df70b5d4 in std::__debug::vector<std::unique_ptr<ScTable, o3tl::default_delete<ScTable> >, std::allocator<std::unique_ptr<ScTable, o3tl::default_delete<ScTable> > > >::clear() /home/tdf/lode/opt_private/gcc-7.3.0/lib/gcc/x86_64-pc-linux-gnu/7.3.0/../../../../include/c++/7.3.0/debug/vector:699:9 + #15 0x2ab6df704cb2 in ScDocument::Clear(bool) /sc/source/core/data/documen9.cxx:506:12 + #16 0x2ab6df490652 in ScDocument::~ScDocument() /sc/source/core/data/documen2.cxx:363:5 + #17 0x2ab6e363315d in ScDocShell::~ScDocShell() /sc/source/ui/docshell/docsh.cxx:2925:1 + #18 0x2ab6e363333b in ScDocShell::~ScDocShell() /sc/source/ui/docshell/docsh.cxx:2894:1 + #19 0x2ab6e3633514 in ScDocShell::~ScDocShell() /sc/source/ui/docshell/docsh.cxx:2894:1 + #20 0x2ab6de4f105d in SvRefBase::ReleaseRef() /include/tools/ref.hxx:163:29 + #21 0x2ab6de4a6259 in tools::SvRef<ScDocShell>::clear() /include/tools/ref.hxx:64:22 + #22 0x2ab6de2b1aaa in Test::closeDocShell(tools::SvRef<ScDocShell>&) /sc/qa/unit/ucalc.cxx:365:18 + #23 0x2ab6de2b2102 in Test::tearDown() /sc/qa/unit/ucalc.cxx:380:5 + #24 0x2ab6de543787 in CppUnit::TestCaller<Test>::tearDown() /workdir/UnpackedTarball/cppunit/include/cppunit/TestCaller.h:185:15 + #25 0x2ab69335765a in CppUnit::TestCaseMethodFunctor::operator()() const /workdir/UnpackedTarball/cppunit/src/cppunit/TestCase.cpp:32:5 + #26 0x2ab6ae4f3957 in (anonymous namespace)::Protector::protect(CppUnit::Functor const&, CppUnit::ProtectorContext const&) /test/source/vclbootstrapprotector.cxx:46:14 + #27 0x2ab693328cd7 in CppUnit::ProtectorChain::ProtectFunctor::operator()() const /workdir/UnpackedTarball/cppunit/src/cppunit/ProtectorChain.cpp:20:25 + #28 0x2ab6a2974ff7 in (anonymous namespace)::Prot::protect(CppUnit::Functor const&, CppUnit::ProtectorContext const&) /unotest/source/cpp/unobootstrapprotector/unobootstrapprotector.cxx:78:12 + #29 0x2ab693328cd7 in CppUnit::ProtectorChain::ProtectFunctor::operator()() const /workdir/UnpackedTarball/cppunit/src/cppunit/ProtectorChain.cpp:20:25 + +during CppunitTest_sc_ucalc + +Change-Id: I778984beb9d1e355d3b8f9617b193424f332a32e +Reviewed-on: https://gerrit.libreoffice.org/c/core/+/124709 +Tested-by: Jenkins +Reviewed-by: Kohei Yoshida <kohei@libreoffice.org> +--- + sc/inc/column.hxx | 2 -- + sc/inc/mtvelements.hxx | 3 +++ + sc/source/core/data/column.cxx | 3 +-- + sc/source/core/data/column3.cxx | 2 ++ + sc/source/core/data/mtvelements.cxx | 5 +++++ + 5 files changed, 11 insertions(+), 4 deletions(-) + +diff --git a/sc/inc/column.hxx b/sc/inc/column.hxx +index 6300fe70bca1..4c08e7b41479 100644 +--- a/sc/inc/column.hxx ++++ b/sc/inc/column.hxx +@@ -123,8 +123,6 @@ class ScColumn + // Broadcasters for formula cells. + sc::BroadcasterStoreType maBroadcasters; + +- sc::CellStoreEvent maCellsEvent; +- + // Cell values. + sc::CellStoreType maCells; + +diff --git a/sc/inc/mtvelements.hxx b/sc/inc/mtvelements.hxx +index 636706e0c234..05a0970bd64d 100644 +--- a/sc/inc/mtvelements.hxx ++++ b/sc/inc/mtvelements.hxx +@@ -95,6 +95,9 @@ public: + + void element_block_acquired(const mdds::mtv::base_element_block* block); + void element_block_released(const mdds::mtv::base_element_block* block); ++ ++ /** Stop processing events. */ ++ void stop(); + }; + + struct CellStoreTrait +diff --git a/sc/source/core/data/column.cxx b/sc/source/core/data/column.cxx +index 4bd91f60f3a0..3b148dda6b88 100644 +--- a/sc/source/core/data/column.cxx ++++ b/sc/source/core/data/column.cxx +@@ -82,8 +82,7 @@ ScColumn::ScColumn(ScSheetLimits const & rSheetLimits) : + maCellTextAttrs(rSheetLimits.GetMaxRowCount()), + maCellNotes(rSheetLimits.GetMaxRowCount()), + maBroadcasters(rSheetLimits.GetMaxRowCount()), +- maCellsEvent(this), +- maCells(maCellsEvent), ++ maCells(sc::CellStoreEvent(this)), + mnBlkCountFormula(0), + nCol( 0 ), + nTab( 0 ), +diff --git a/sc/source/core/data/column3.cxx b/sc/source/core/data/column3.cxx +index 9bbd9c1bca77..4a062a476a32 100644 +--- a/sc/source/core/data/column3.cxx ++++ b/sc/source/core/data/column3.cxx +@@ -156,6 +156,8 @@ void ScColumn::Delete( SCROW nRow ) + + void ScColumn::FreeAll() + { ++ maCells.event_handler().stop(); ++ + auto maxRowCount = GetDoc().GetSheetLimits().GetMaxRowCount(); + // Keep a logical empty range of 0-rDoc.MaxRow() at all times. + maCells.clear(); +diff --git a/sc/source/core/data/mtvelements.cxx b/sc/source/core/data/mtvelements.cxx +index c7d7e52bfccf..ee6c9cf1499c 100644 +--- a/sc/source/core/data/mtvelements.cxx ++++ b/sc/source/core/data/mtvelements.cxx +@@ -51,6 +51,11 @@ void CellStoreEvent::element_block_released(const mdds::mtv::base_element_block* + } + } + ++void CellStoreEvent::stop() ++{ ++ mpCol = nullptr; ++} ++ + ColumnBlockPositionSet::ColumnBlockPositionSet(ScDocument& rDoc) : mrDoc(rDoc) {} + + ColumnBlockPosition* ColumnBlockPositionSet::getBlockPosition(SCTAB nTab, SCCOL nCol) +-- +cgit v1.2.1 + +From 037d5454a39260635aeb7064ac32c7a485af8197 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com> +Date: Wed, 17 Nov 2021 10:27:03 +0000 +Subject: crashtesting: crash on passing null to std::string_view +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +with many documents, e.g. moz377878-1.xhtml + +https: //gitlab.com/orcus/orcus/-/merge_requests/113 +Change-Id: I085543ebb28c02a1c0ec487b357f6e0a83004363 +Reviewed-on: https://gerrit.libreoffice.org/c/core/+/125378 +Tested-by: Caolán McNamara <caolanm@redhat.com> +Reviewed-by: Caolán McNamara <caolanm@redhat.com> +--- + external/liborcus/UnpackedTarball_liborcus.mk | 4 ++++ + ...crash-on-passing-null-to-std-string_vie.patch.1 | 27 ++++++++++++++++++++++ + 2 files changed, 31 insertions(+) + create mode 100644 external/liborcus/crashtesting-crash-on-passing-null-to-std-string_vie.patch.1 + +diff --git a/external/liborcus/UnpackedTarball_liborcus.mk b/external/liborcus/UnpackedTarball_liborcus.mk +index 3d2cec42e55e..86c30431e05d 100644 +--- a/external/liborcus/UnpackedTarball_liborcus.mk ++++ b/external/liborcus/UnpackedTarball_liborcus.mk +@@ -15,6 +15,9 @@ $(eval $(call gb_UnpackedTarball_set_patchlevel,liborcus,1)) + + $(eval $(call gb_UnpackedTarball_update_autoconf_configs,liborcus)) + ++# crashtesting-crash-on-passing-null-to-std-string_vie.patch.1 submitted as ++# https://gitlab.com/orcus/orcus/-/merge_requests/113 ++ + $(eval $(call gb_UnpackedTarball_add_patches,liborcus,\ + external/liborcus/rpath.patch.0 \ + external/liborcus/gcc9.patch.0 \ +@@ -25,6 +28,7 @@ $(eval $(call gb_UnpackedTarball_add_patches,liborcus,\ + external/liborcus/unused-variables.patch.1 \ + external/liborcus/boost-filesystem.patch.1 \ + external/liborcus/std-get-busted.patch.1 \ ++ external/liborcus/crashtesting-crash-on-passing-null-to-std-string_vie.patch.1 \ + )) + + ifeq ($(OS),WNT) +diff --git a/external/liborcus/crashtesting-crash-on-passing-null-to-std-string_vie.patch.1 b/external/liborcus/crashtesting-crash-on-passing-null-to-std-string_vie.patch.1 +new file mode 100644 +index 000000000000..97e7b8366fde +--- /dev/null ++++ b/external/liborcus/crashtesting-crash-on-passing-null-to-std-string_vie.patch.1 +@@ -0,0 +1,27 @@ ++From ed21a93e132b968d8cd91aa080e1f90e980267c7 Mon Sep 17 00:00:00 2001 ++From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com> ++Date: Wed, 17 Nov 2021 10:21:32 +0000 ++Subject: [PATCH] crashtesting: crash on passing null to std::string_view ++ ++with many documents, e.g. moz377878-1.xhtml ++--- ++ src/parser/xml_namespace.cpp | 3 ++- ++ 1 file changed, 2 insertions(+), 1 deletion(-) ++ ++diff --git a/src/parser/xml_namespace.cpp b/src/parser/xml_namespace.cpp ++index 07942563..66077d9c 100644 ++--- a/src/parser/xml_namespace.cpp +++++ b/src/parser/xml_namespace.cpp ++@@ -223,7 +223,8 @@ xmlns_id_t xmlns_context::push(std::string_view key, std::string_view uri) ++ #endif ++ mp_impl->m_trim_all_ns = true; ++ ++- std::string_view uri_interned = mp_impl->repo->intern(uri); +++ xmlns_id_t id = mp_impl->repo->intern(uri); +++ std::string_view uri_interned = id ? std::string_view(id) : std::string_view(); ++ ++ if (key.empty()) ++ { ++-- ++2.33.1 ++ +-- +cgit v1.2.1 + +From dd4d715ef775db456c0c9653a3d9f9b439e82e8e Mon Sep 17 00:00:00 2001 +From: Kohei Yoshida <kohei@libreoffice.org> +Date: Fri, 10 Dec 2021 22:02:24 -0500 +Subject: Update liborcus to 0.17.2. + +Change-Id: I76c0d57da63c1e35f80b13071793dbbb27cb218a +Reviewed-on: https://gerrit.libreoffice.org/c/core/+/126655 +Tested-by: Jenkins +Reviewed-by: Kohei Yoshida <kohei@libreoffice.org> +(cherry picked from commit aadbac5467bb6ab768f87ed6ec003c55159d54aa) +Reviewed-on: https://gerrit.libreoffice.org/c/core/+/126886 +--- + download.lst | 4 +- + external/liborcus/Library_orcus.mk | 3 + + external/liborcus/UnpackedTarball_liborcus.mk | 4 - + external/liborcus/boost-filesystem.patch.1 | 41 - + ...crash-on-passing-null-to-std-string_vie.patch.1 | 27 - + external/liborcus/remove-unused-parameters.patch.1 | 1209 -------------------- + external/liborcus/unused-variables.patch.1 | 24 - + external/liborcus/windows-constants-hack.patch | 4 +- + sc/source/filter/orcus/interface.cxx | 7 +- + 9 files changed, 10 insertions(+), 1313 deletions(-) + delete mode 100644 external/liborcus/boost-filesystem.patch.1 + delete mode 100644 external/liborcus/crashtesting-crash-on-passing-null-to-std-string_vie.patch.1 + delete mode 100644 external/liborcus/remove-unused-parameters.patch.1 + delete mode 100644 external/liborcus/unused-variables.patch.1 + +diff --git a/download.lst b/download.lst +index 8dd656fd5de9..b2ca26814d5b 100644 +--- a/download.lst ++++ b/download.lst +@@ -204,8 +204,8 @@ export OPENLDAP_SHA256SUM := 99f37d6747d88206c470067eda624d5e48c1011e943ec0ab217 + export OPENLDAP_TARBALL := openldap-2.4.59.tgz + export OPENSSL_SHA256SUM := 0b7a3e5e59c34827fe0c3a74b7ec8baef302b98fa80088d7f9153aa16fa76bd1 + export OPENSSL_TARBALL := openssl-1.1.1l.tar.gz +-export ORCUS_SHA256SUM := 2ef9d2b5ee374c683cf631b78356b110510ab895788a68d778e225d8c4176d1b +-export ORCUS_TARBALL := liborcus-0.17.0.tar.bz2 ++export ORCUS_SHA256SUM := 2a86c405a5929f749b27637509596421d46805753364ab258b035fd01fbde143 ++export ORCUS_TARBALL := liborcus-0.17.2.tar.bz2 + export PAGEMAKER_SHA256SUM := 66adacd705a7d19895e08eac46d1e851332adf2e736c566bef1164e7a442519d + export PAGEMAKER_TARBALL := libpagemaker-0.0.4.tar.xz + export PDFIUM_SHA256SUM := 26a03dd60e5ed0979cdaba9cc848242895110ddfdf347d40989ce2f14020f304 +diff --git a/external/liborcus/Library_orcus.mk b/external/liborcus/Library_orcus.mk +index 0a0ca582882a..3c318797a031 100644 +--- a/external/liborcus/Library_orcus.mk ++++ b/external/liborcus/Library_orcus.mk +@@ -132,12 +132,15 @@ $(eval $(call gb_Library_add_generated_exception_objects,orcus,\ + UnpackedTarball/liborcus/src/liborcus/xlsx_workbook_context \ + UnpackedTarball/liborcus/src/liborcus/xml_context_base \ + UnpackedTarball/liborcus/src/liborcus/xml_context_global \ ++ UnpackedTarball/liborcus/src/liborcus/xml_element_validator \ ++ UnpackedTarball/liborcus/src/liborcus/xml_empty_context \ + UnpackedTarball/liborcus/src/liborcus/xml_map_tree \ + UnpackedTarball/liborcus/src/liborcus/xml_simple_stream_handler \ + UnpackedTarball/liborcus/src/liborcus/xml_stream_handler \ + UnpackedTarball/liborcus/src/liborcus/xml_stream_parser \ + UnpackedTarball/liborcus/src/liborcus/xml_structure_mapper \ + UnpackedTarball/liborcus/src/liborcus/xml_structure_tree \ ++ UnpackedTarball/liborcus/src/liborcus/xml_util \ + UnpackedTarball/liborcus/src/liborcus/xpath_parser \ + UnpackedTarball/liborcus/src/liborcus/yaml_document_tree \ + )) +diff --git a/external/liborcus/UnpackedTarball_liborcus.mk b/external/liborcus/UnpackedTarball_liborcus.mk +index 86c30431e05d..87e462e33d91 100644 +--- a/external/liborcus/UnpackedTarball_liborcus.mk ++++ b/external/liborcus/UnpackedTarball_liborcus.mk +@@ -24,11 +24,7 @@ $(eval $(call gb_UnpackedTarball_add_patches,liborcus,\ + external/liborcus/libtool.patch.0 \ + external/liborcus/fix-pch.patch.0 \ + external/liborcus/liborcus_newline.patch.1 \ +- external/liborcus/remove-unused-parameters.patch.1 \ +- external/liborcus/unused-variables.patch.1 \ +- external/liborcus/boost-filesystem.patch.1 \ + external/liborcus/std-get-busted.patch.1 \ +- external/liborcus/crashtesting-crash-on-passing-null-to-std-string_vie.patch.1 \ + )) + + ifeq ($(OS),WNT) +diff --git a/external/liborcus/boost-filesystem.patch.1 b/external/liborcus/boost-filesystem.patch.1 +deleted file mode 100644 +index 14128b4e1c67..000000000000 +--- a/external/liborcus/boost-filesystem.patch.1 ++++ /dev/null +@@ -1,41 +0,0 @@ +-From e44737bad582fa2a05a23820e49d7930db710412 Mon Sep 17 00:00:00 2001 +-From: Kohei Yoshida <kohei.yoshida@gmail.com> +-Date: Tue, 2 Nov 2021 21:33:19 -0400 +-Subject: [PATCH] Try using boost::filesystem instead of std::filesystem. +- +-std::filesystem still seems unreliable. +---- +- src/parser/stream.cpp | 6 +++--- +- 1 file changed, 3 insertions(+), 3 deletions(-) +- +-diff --git a/src/parser/stream.cpp b/src/parser/stream.cpp +-index 09855300..00395f59 100644 +---- a/src/parser/stream.cpp +-+++ b/src/parser/stream.cpp +-@@ -17,12 +17,12 @@ +- #include <locale> +- #include <codecvt> +- #include <iostream> +--#include <filesystem> +- +-+#include <boost/filesystem.hpp> +- #include <boost/interprocess/file_mapping.hpp> +- #include <boost/interprocess/mapped_region.hpp> +- +--namespace fs = std::filesystem; +-+namespace fs = boost::filesystem; +- namespace bip = boost::interprocess; +- +- namespace orcus { +-@@ -162,7 +162,7 @@ struct file_content::impl +- impl() : content_size(0), content(nullptr) {} +- +- impl(std::string_view filepath) : +-- content_size(fs::file_size(filepath)), +-+ content_size(fs::file_size(std::string{filepath}.c_str())), +- mapped_file(std::string{filepath}.c_str(), bip::read_only), +- mapped_region(mapped_file, bip::read_only, 0, content_size), +- content(nullptr) +--- +-2.25.1 +- +diff --git a/external/liborcus/crashtesting-crash-on-passing-null-to-std-string_vie.patch.1 b/external/liborcus/crashtesting-crash-on-passing-null-to-std-string_vie.patch.1 +deleted file mode 100644 +index 97e7b8366fde..000000000000 +--- a/external/liborcus/crashtesting-crash-on-passing-null-to-std-string_vie.patch.1 ++++ /dev/null +@@ -1,27 +0,0 @@ +-From ed21a93e132b968d8cd91aa080e1f90e980267c7 Mon Sep 17 00:00:00 2001 +-From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com> +-Date: Wed, 17 Nov 2021 10:21:32 +0000 +-Subject: [PATCH] crashtesting: crash on passing null to std::string_view +- +-with many documents, e.g. moz377878-1.xhtml +---- +- src/parser/xml_namespace.cpp | 3 ++- +- 1 file changed, 2 insertions(+), 1 deletion(-) +- +-diff --git a/src/parser/xml_namespace.cpp b/src/parser/xml_namespace.cpp +-index 07942563..66077d9c 100644 +---- a/src/parser/xml_namespace.cpp +-+++ b/src/parser/xml_namespace.cpp +-@@ -223,7 +223,8 @@ xmlns_id_t xmlns_context::push(std::string_view key, std::string_view uri) +- #endif +- mp_impl->m_trim_all_ns = true; +- +-- std::string_view uri_interned = mp_impl->repo->intern(uri); +-+ xmlns_id_t id = mp_impl->repo->intern(uri); +-+ std::string_view uri_interned = id ? std::string_view(id) : std::string_view(); +- +- if (key.empty()) +- { +--- +-2.33.1 +- +diff --git a/external/liborcus/remove-unused-parameters.patch.1 b/external/liborcus/remove-unused-parameters.patch.1 +deleted file mode 100644 +index 251ed804acaf..000000000000 +--- a/external/liborcus/remove-unused-parameters.patch.1 ++++ /dev/null +@@ -1,1209 +0,0 @@ +-From 5bb64db5ecfd1dc3be3304092f4bdebff54deae5 Mon Sep 17 00:00:00 2001 +-From: Kohei Yoshida <kohei.yoshida@gmail.com> +-Date: Tue, 2 Nov 2021 19:33:29 -0400 +-Subject: [PATCH] Remove unused parameter warnings. +- +---- +- doc_example/json_parser_1.cpp | 4 +- +- ...preadsheet_doc_2_sheets_no_string_pool.cpp | 22 ++++----- +- .../spreadsheet_doc_2_sheets_with_formula.cpp | 47 +++++++++---------- +- ...eadsheet_doc_2_sheets_with_string_pool.cpp | 40 +++++++--------- +- doc_example/xml_mapping_1.cpp | 2 +- +- src/liborcus/css_document_tree.cpp | 3 ++ +- src/liborcus/dom_tree.cpp | 2 +- +- src/liborcus/gnumeric_cell_context_test.cpp | 14 +++--- +- src/liborcus/json_document_tree.cpp | 6 +-- +- src/liborcus/json_structure_mapper.cpp | 2 +- +- src/liborcus/json_structure_tree.cpp | 4 +- +- src/liborcus/mock_spreadsheet.cpp | 14 +++--- +- src/liborcus/ods_dde_links_context.cpp | 10 ++-- +- src/liborcus/opc_context.cpp | 16 +++---- +- src/liborcus/orcus_json.cpp | 4 +- +- src/liborcus/orcus_xml_map_def.cpp | 4 +- +- src/liborcus/spreadsheet_interface.cpp | 4 +- +- src/liborcus/xls_xml_context.cpp | 12 ++--- +- src/liborcus/xls_xml_detection_handler.cpp | 2 +- +- src/liborcus/xlsx_drawing_context.cpp | 2 +- +- src/liborcus/xlsx_sheet_context.cpp | 2 +- +- src/liborcus/xlsx_sheet_context_test.cpp | 8 ++-- +- src/liborcus/xlsx_table_context.cpp | 2 +- +- src/liborcus/xml_structure_tree.cpp | 6 +-- +- src/liborcus/xpath_parser_test.cpp | 2 +- +- src/orcus_env_dump.cpp | 2 +- +- src/orcus_test_json_mapped.cpp | 2 +- +- src/orcus_test_xml.cpp | 2 +- +- src/orcus_test_xml_mapped.cpp | 2 +- +- src/parser/sax_token_parser_test.cpp | 2 +- +- src/parser/sax_token_parser_thread.cpp | 2 +- +- src/parser/utf8.cpp | 2 +- +- src/parser/utf8_test.cpp | 2 +- +- src/parser/xml_writer_test.cpp | 2 +- +- src/python/cell.cpp | 2 +- +- src/python/document.cpp | 4 +- +- src/python/formula_tokens.cpp | 2 +- +- src/python/global.cpp | 2 +- +- src/python/json.cpp | 4 +- +- src/python/named_expression.cpp | 2 +- +- src/python/named_expressions.cpp | 4 +- +- src/python/sheet.cpp | 6 +-- +- src/python/sheet_rows.cpp | 2 +- +- src/spreadsheet/factory_sheet.cpp | 18 +++---- +- src/spreadsheet/sheet_impl.cpp | 2 +- +- 45 files changed, 143 insertions(+), 157 deletions(-) +- +-diff --git a/doc_example/json_parser_1.cpp b/doc_example/json_parser_1.cpp +-index 6fc6de12..832e5176 100644 +---- a/doc_example/json_parser_1.cpp +-+++ b/doc_example/json_parser_1.cpp +-@@ -8,12 +8,12 @@ using namespace std; +- class json_parser_handler : public orcus::json_handler +- { +- public: +-- void object_key(const char* p, size_t len, bool transient) +-+ void object_key(const char* p, size_t len, bool /*transient*/) +- { +- cout << "object key: " << std::string_view(p, len) << endl; +- } +- +-- void string(const char* p, size_t len, bool transient) +-+ void string(const char* p, size_t len, bool /*transient*/) +- { +- cout << "string: " << std::string_view(p, len) << endl; +- } +-diff --git a/doc_example/spreadsheet_doc_2_sheets_no_string_pool.cpp b/doc_example/spreadsheet_doc_2_sheets_no_string_pool.cpp +-index 63ffacc3..0aa86caf 100644 +---- a/doc_example/spreadsheet_doc_2_sheets_no_string_pool.cpp +-+++ b/doc_example/spreadsheet_doc_2_sheets_no_string_pool.cpp +-@@ -64,22 +64,17 @@ public: +- } +- +- // We don't implement these methods for now. +-- virtual void set_auto(ss::row_t row, ss::col_t col, std::string_view s) override {} +-+ virtual void set_auto(ss::row_t, ss::col_t, std::string_view) override {} +- +-- virtual void set_bool(ss::row_t row, ss::col_t col, bool value) override {} +-+ virtual void set_bool(ss::row_t, ss::col_t, bool) override {} +- +-- virtual void set_date_time( +-- ss::row_t row, ss::col_t col, +-- int year, int month, int day, int hour, int minute, double second) override {} +-+ virtual void set_date_time(ss::row_t, ss::col_t, int, int, int, int, int, double) override {} +- +-- virtual void set_format(ss::row_t row, ss::col_t col, std::size_t xf_index) override {} +-+ virtual void set_format(ss::row_t, ss::col_t, std::size_t) override {} +- +-- virtual void set_format( +-- ss::row_t row_start, ss::col_t col_start, ss::row_t row_end, ss::col_t col_end, +-- std::size_t xf_index) override {} +-+ virtual void set_format(ss::row_t, ss::col_t, ss::row_t, ss::col_t, std::size_t) override {} +- +-- virtual void fill_down_cells( +-- ss::row_t src_row, ss::col_t src_col, ss::row_t range_size) override {} +-+ virtual void fill_down_cells(ss::row_t, ss::col_t, ss::row_t) override {} +- }; +- //!code-end: my_sheet +- +-@@ -89,14 +84,13 @@ class my_import_factory : public ss::iface::import_factory +- std::vector<std::unique_ptr<my_sheet>> m_sheets; +- +- public: +-- virtual ss::iface::import_sheet* append_sheet( +-- ss::sheet_t sheet_index, std::string_view name) override +-+ virtual ss::iface::import_sheet* append_sheet(ss::sheet_t, std::string_view) override +- { +- m_sheets.push_back(std::make_unique<my_sheet>(m_sheets.size())); +- return m_sheets.back().get(); +- } +- +-- virtual ss::iface::import_sheet* get_sheet(std::string_view name) override +-+ virtual ss::iface::import_sheet* get_sheet(std::string_view) override +- { +- // TODO : implement this. +- return nullptr; +-diff --git a/doc_example/spreadsheet_doc_2_sheets_with_formula.cpp b/doc_example/spreadsheet_doc_2_sheets_with_formula.cpp +-index 1c3f3d5b..11e1932e 100644 +---- a/doc_example/spreadsheet_doc_2_sheets_with_formula.cpp +-+++ b/doc_example/spreadsheet_doc_2_sheets_with_formula.cpp +-@@ -87,15 +87,15 @@ public: +- m_formula.grammar = grammar; +- } +- +-- virtual void set_shared_formula_index(std::size_t index) override {} +-+ virtual void set_shared_formula_index(std::size_t) override {} +- +-- virtual void set_result_string(std::string_view value) override {} +-+ virtual void set_result_string(std::string_view) override {} +- +-- virtual void set_result_value(double value) override {} +-+ virtual void set_result_value(double) override {} +- +- virtual void set_result_empty() override {} +- +-- virtual void set_result_bool(bool value) override {} +-+ virtual void set_result_bool(bool) override {} +- +- virtual void commit() override +- { +-@@ -154,22 +154,17 @@ public: +- } +- +- // We don't implement these methods for now. +-- virtual void set_auto(ss::row_t row, ss::col_t col, std::string_view s) override {} +-+ virtual void set_auto(ss::row_t, ss::col_t, std::string_view) override {} +- +-- virtual void set_bool(ss::row_t row, ss::col_t col, bool value) override {} +-+ virtual void set_bool(ss::row_t, ss::col_t, bool) override {} +- +-- virtual void set_date_time( +-- ss::row_t row, ss::col_t col, +-- int year, int month, int day, int hour, int minute, double second) override {} +-+ virtual void set_date_time(ss::row_t, ss::col_t, int, int, int, int, int, double) override {} +- +-- virtual void set_format(ss::row_t row, ss::col_t col, std::size_t xf_index) override {} +-+ virtual void set_format(ss::row_t, ss::col_t, std::size_t) override {} +- +-- virtual void set_format( +-- ss::row_t row_start, ss::col_t col_start, ss::row_t row_end, ss::col_t col_end, +-- std::size_t xf_index) override {} +-+ virtual void set_format(ss::row_t, ss::col_t, ss::row_t, ss::col_t, std::size_t) override {} +- +-- virtual void fill_down_cells( +-- ss::row_t src_row, ss::col_t src_col, ss::row_t range_size) override {} +-+ virtual void fill_down_cells(ss::row_t, ss::col_t, ss::row_t) override {} +- +- virtual ss::iface::import_formula* get_formula() override +- { +-@@ -208,21 +203,21 @@ public: +- } +- +- // The following methods are for formatted text segments, which we ignore for now. +-- virtual void set_segment_bold(bool b) override {} +-+ virtual void set_segment_bold(bool) override {} +- +-- virtual void set_segment_font(std::size_t font_index) override {} +-+ virtual void set_segment_font(std::size_t) override {} +- +- virtual void set_segment_font_color( +-- ss::color_elem_t alpha, +-- ss::color_elem_t red, +-- ss::color_elem_t green, +-- ss::color_elem_t blue) override {} +-+ ss::color_elem_t, +-+ ss::color_elem_t, +-+ ss::color_elem_t, +-+ ss::color_elem_t) override {} +- +-- virtual void set_segment_font_name(std::string_view s) override {} +-+ virtual void set_segment_font_name(std::string_view) override {} +- +-- virtual void set_segment_font_size(double point) override {} +-+ virtual void set_segment_font_size(double) override {} +- +-- virtual void set_segment_italic(bool b) override {} +-+ virtual void set_segment_italic(bool) override {} +- +- virtual void append_segment(std::string_view s) override +- { +-@@ -256,14 +251,14 @@ public: +- return &m_shared_strings; +- } +- +-- virtual ss::iface::import_sheet* append_sheet(ss::sheet_t sheet_index, std::string_view name) override +-+ virtual ss::iface::import_sheet* append_sheet(ss::sheet_t, std::string_view) override +- { +- // Pass the string pool to each sheet instance. +- m_sheets.push_back(std::make_unique<my_sheet>(m_sheets.size(), m_string_pool)); +- return m_sheets.back().get(); +- } +- +-- virtual ss::iface::import_sheet* get_sheet(std::string_view name) override +-+ virtual ss::iface::import_sheet* get_sheet(std::string_view) override +- { +- // TODO : implement this. +- return nullptr; +-diff --git a/doc_example/spreadsheet_doc_2_sheets_with_string_pool.cpp b/doc_example/spreadsheet_doc_2_sheets_with_string_pool.cpp +-index ff69c835..0153dd08 100644 +---- a/doc_example/spreadsheet_doc_2_sheets_with_string_pool.cpp +-+++ b/doc_example/spreadsheet_doc_2_sheets_with_string_pool.cpp +-@@ -70,22 +70,17 @@ public: +- } +- +- // We don't implement these methods for now. +-- virtual void set_auto(ss::row_t row, ss::col_t col, std::string_view s) override {} +-+ virtual void set_auto(ss::row_t, ss::col_t, std::string_view) override {} +- +-- virtual void set_bool(ss::row_t row, ss::col_t col, bool value) override {} +-+ virtual void set_bool(ss::row_t, ss::col_t, bool) override {} +- +-- virtual void set_date_time( +-- ss::row_t row, ss::col_t col, +-- int year, int month, int day, int hour, int minute, double second) override {} +-+ virtual void set_date_time(ss::row_t, ss::col_t, int, int, int, int, int, double) override {} +- +-- virtual void set_format(ss::row_t row, ss::col_t col, std::size_t xf_index) override {} +-+ virtual void set_format(ss::row_t, ss::col_t, std::size_t) override {} +- +-- virtual void set_format( +-- ss::row_t row_start, ss::col_t col_start, ss::row_t row_end, ss::col_t col_end, +-- std::size_t xf_index) override {} +-+ virtual void set_format(ss::row_t, ss::col_t, ss::row_t, ss::col_t, std::size_t) override {} +- +-- virtual void fill_down_cells( +-- ss::row_t src_row, ss::col_t src_col, ss::row_t range_size) override {} +-+ virtual void fill_down_cells(ss::row_t, ss::col_t, ss::row_t) override {} +- }; +- +- //!code-start: my_shared_strings +-@@ -119,21 +114,21 @@ public: +- } +- +- // The following methods are for formatted text segments, which we ignore for now. +-- virtual void set_segment_bold(bool b) override {} +-+ virtual void set_segment_bold(bool) override {} +- +-- virtual void set_segment_font(std::size_t font_index) override {} +-+ virtual void set_segment_font(std::size_t) override {} +- +- virtual void set_segment_font_color( +-- ss::color_elem_t alpha, +-- ss::color_elem_t red, +-- ss::color_elem_t green, +-- ss::color_elem_t blue) override {} +-+ ss::color_elem_t, +-+ ss::color_elem_t, +-+ ss::color_elem_t, +-+ ss::color_elem_t) override {} +- +-- virtual void set_segment_font_name(std::string_view s) override {} +-+ virtual void set_segment_font_name(std::string_view) override {} +- +-- virtual void set_segment_font_size(double point) override {} +-+ virtual void set_segment_font_size(double) override {} +- +-- virtual void set_segment_italic(bool b) override {} +-+ virtual void set_segment_italic(bool) override {} +- +- virtual void append_segment(std::string_view s) override +- { +-@@ -169,15 +164,14 @@ public: +- return &m_shared_strings; +- } +- +-- virtual ss::iface::import_sheet* append_sheet( +-- ss::sheet_t sheet_index, std::string_view name) override +-+ virtual ss::iface::import_sheet* append_sheet(ss::sheet_t, std::string_view) override +- { +- // Pass the string pool to each sheet instance. +- m_sheets.push_back(std::make_unique<my_sheet>(m_sheets.size(), m_string_pool)); +- return m_sheets.back().get(); +- } +- +-- virtual ss::iface::import_sheet* get_sheet(std::string_view name) override +-+ virtual ss::iface::import_sheet* get_sheet(std::string_view) override +- { +- // TODO : implement this. +- return nullptr; +-diff --git a/doc_example/xml_mapping_1.cpp b/doc_example/xml_mapping_1.cpp +-index f23d620c..33d6ff22 100644 +---- a/doc_example/xml_mapping_1.cpp +-+++ b/doc_example/xml_mapping_1.cpp +-@@ -118,7 +118,7 @@ void run_xmlns_different_ns_same_alias() +- cout << (alias_1 == alias_2 ? "same" : "different") << endl; +- } +- +--int main(int argc, char** argv) +-+int main() +- { +- run_xmlns_example(); +- run_xmlns_stacked(); +-diff --git a/src/liborcus/css_document_tree.cpp b/src/liborcus/css_document_tree.cpp +-index 5f84c013..46bf7e91 100644 +---- a/src/liborcus/css_document_tree.cpp +-+++ b/src/liborcus/css_document_tree.cpp +-@@ -54,6 +54,9 @@ public: +- { +- #if ORCUS_DEBUG_CSS_DOCTREE +- cout << "@" << string(p, n).c_str(); +-+#else +-+ (void)p; +-+ (void)n; +- #endif +- } +- +-diff --git a/src/liborcus/dom_tree.cpp b/src/liborcus/dom_tree.cpp +-index 51db6ef8..64ecf8ef 100644 +---- a/src/liborcus/dom_tree.cpp +-+++ b/src/liborcus/dom_tree.cpp +-@@ -527,7 +527,7 @@ void document_tree::impl::end_element(const sax_ns_parser_element& elem) +- m_elem_stack.pop_back(); +- } +- +--void document_tree::impl::characters(const pstring& val, bool transient) +-+void document_tree::impl::characters(const pstring& val, bool /*transient*/) +- { +- if (m_elem_stack.empty()) +- // No root element has been encountered. Ignore this. +-diff --git a/src/liborcus/gnumeric_cell_context_test.cpp b/src/liborcus/gnumeric_cell_context_test.cpp +-index fc543096..aeec16bd 100644 +---- a/src/liborcus/gnumeric_cell_context_test.cpp +-+++ b/src/liborcus/gnumeric_cell_context_test.cpp +-@@ -41,19 +41,19 @@ public: +- assert(formula == "=arrayFormula"); +- } +- +-- virtual void set_result_bool(row_t row, col_t col, bool value) override +-+ virtual void set_result_bool(row_t, col_t, bool) override +- { +- } +- +-- virtual void set_result_empty(row_t row, col_t col) override +-+ virtual void set_result_empty(row_t, col_t) override +- { +- } +- +-- virtual void set_result_string(row_t row, col_t col, std::string_view) override +-+ virtual void set_result_string(row_t, col_t, std::string_view) override +- { +- } +- +-- virtual void set_result_value(row_t row, col_t col, double value) override +-+ virtual void set_result_value(row_t, col_t, double) override +- { +- } +- +-@@ -77,11 +77,11 @@ public: +- assert(formula == "=formula"); +- } +- +-- virtual void set_shared_formula_index(size_t index) override +-+ virtual void set_shared_formula_index(size_t) override +- { +- } +- +-- virtual void set_result_bool(bool value) override +-+ virtual void set_result_bool(bool) override +- { +- } +- +-@@ -93,7 +93,7 @@ public: +- { +- } +- +-- virtual void set_result_value(double value) override +-+ virtual void set_result_value(double) override +- { +- } +- +-diff --git a/src/liborcus/json_document_tree.cpp b/src/liborcus/json_document_tree.cpp +-index 4eedea47..c163a364 100644 +---- a/src/liborcus/json_document_tree.cpp +-+++ b/src/liborcus/json_document_tree.cpp +-@@ -1217,7 +1217,7 @@ array::array(std::initializer_list<detail::init::node> vs) +- array::~array() {} +- +- object::object() {} +--object::object(object&& other) {} +-+object::object(object&& /*other*/) {} +- object::~object() {} +- +- namespace { +-@@ -1388,7 +1388,7 @@ struct node::impl +- m_value_array(std::move(array.m_vs)) +- {} +- +-- impl(json::object obj) : +-+ impl(json::object /*obj*/) : +- m_type(detail::node_t::object) {} +- }; +- +-@@ -1634,7 +1634,7 @@ document_tree::document_tree(array vs) : mp_impl(std::make_unique<impl>()) +- } +- } +- +--document_tree::document_tree(object obj) : mp_impl(std::make_unique<impl>()) +-+document_tree::document_tree(object /*obj*/) : mp_impl(std::make_unique<impl>()) +- { +- mp_impl->m_root = mp_impl->m_res.obj_pool.construct(detail::node_t::object); +- mp_impl->m_root->value.object = mp_impl->m_res.obj_pool_jvo.construct(); +-diff --git a/src/liborcus/json_structure_mapper.cpp b/src/liborcus/json_structure_mapper.cpp +-index 111d1674..09a9e97e 100644 +---- a/src/liborcus/json_structure_mapper.cpp +-+++ b/src/liborcus/json_structure_mapper.cpp +-@@ -40,7 +40,7 @@ void structure_mapper::push_range() +- m_current_range.row_groups.clear(); +- } +- +--void structure_mapper::traverse(size_t pos) +-+void structure_mapper::traverse(size_t /*pos*/) +- { +- json::structure_tree::node_properties node = m_walker.get_node(); +- +-diff --git a/src/liborcus/json_structure_tree.cpp b/src/liborcus/json_structure_tree.cpp +-index 5c9d600c..3ae8ecc0 100644 +---- a/src/liborcus/json_structure_tree.cpp +-+++ b/src/liborcus/json_structure_tree.cpp +-@@ -235,12 +235,12 @@ struct structure_tree::impl +- push_value(); +- } +- +-- void string(const char* p, size_t len, bool transient) +-+ void string(const char* /*p*/, size_t /*len*/, bool /*transient*/) +- { +- push_value(); +- } +- +-- void number(double val) +-+ void number(double /*val*/) +- { +- push_value(); +- } +-diff --git a/src/liborcus/mock_spreadsheet.cpp b/src/liborcus/mock_spreadsheet.cpp +-index 3bde38ff..4042bdc9 100644 +---- a/src/liborcus/mock_spreadsheet.cpp +-+++ b/src/liborcus/mock_spreadsheet.cpp +-@@ -211,22 +211,22 @@ import_formula::~import_formula() +- { +- } +- +--void import_formula::set_position(row_t row, col_t col) +-+void import_formula::set_position(row_t, col_t) +- { +- assert(false); +- } +- +--void import_formula::set_formula(formula_grammar_t grammar, std::string_view) +-+void import_formula::set_formula(formula_grammar_t, std::string_view) +- { +- assert(false); +- } +- +--void import_formula::set_shared_formula_index(size_t index) +-+void import_formula::set_shared_formula_index(size_t) +- { +- assert(false); +- } +- +--void import_formula::set_result_value(double value) +-+void import_formula::set_result_value(double) +- { +- assert(false); +- } +-@@ -236,7 +236,7 @@ void import_formula::set_result_string(std::string_view) +- assert(false); +- } +- +--void import_formula::set_result_bool(bool value) +-+void import_formula::set_result_bool(bool) +- { +- assert(false); +- } +-@@ -257,7 +257,7 @@ import_sheet::~import_sheet() +- { +- } +- +--void import_sheet::set_auto(row_t, col_t, std::string_view s) +-+void import_sheet::set_auto(row_t, col_t, std::string_view) +- { +- assert(false); +- } +-@@ -292,7 +292,7 @@ void import_sheet::set_format(row_t, col_t, row_t, col_t, size_t) +- assert(false); +- } +- +--void import_sheet::fill_down_cells(row_t src_row, col_t src_col, row_t range_size) +-+void import_sheet::fill_down_cells(row_t, col_t, row_t) +- { +- assert(false); +- } +-diff --git a/src/liborcus/ods_dde_links_context.cpp b/src/liborcus/ods_dde_links_context.cpp +-index db7ab672..783b106f 100644 +---- a/src/liborcus/ods_dde_links_context.cpp +-+++ b/src/liborcus/ods_dde_links_context.cpp +-@@ -14,21 +14,21 @@ ods_dde_links_context::ods_dde_links_context(session_context& session_cxt, const +- +- ods_dde_links_context::~ods_dde_links_context() {} +- +--bool ods_dde_links_context::can_handle_element(xmlns_id_t ns, xml_token_t name) const +-+bool ods_dde_links_context::can_handle_element(xmlns_id_t /*ns*/, xml_token_t /*name*/) const +- { +- return true; +- } +- +--xml_context_base* ods_dde_links_context::create_child_context(xmlns_id_t ns, xml_token_t name) +-+xml_context_base* ods_dde_links_context::create_child_context(xmlns_id_t /*ns*/, xml_token_t /*name*/) +- { +- return nullptr; +- } +- +--void ods_dde_links_context::end_child_context(xmlns_id_t ns, xml_token_t name, xml_context_base *child) +-+void ods_dde_links_context::end_child_context(xmlns_id_t /*ns*/, xml_token_t /*name*/, xml_context_base* /*child*/) +- { +- } +- +--void ods_dde_links_context::start_element(xmlns_id_t ns, xml_token_t name, const::std::vector<xml_token_attr_t> &attrs) +-+void ods_dde_links_context::start_element(xmlns_id_t ns, xml_token_t name, const::std::vector<xml_token_attr_t>& /*attrs*/) +- { +- xml_token_pair_t parent = push_stack(ns, name); +- (void)parent; +-@@ -41,7 +41,7 @@ bool ods_dde_links_context::end_element(xmlns_id_t ns, xml_token_t name) +- return pop_stack(ns, name); +- } +- +--void ods_dde_links_context::characters(const pstring &str, bool transient) +-+void ods_dde_links_context::characters(const pstring& /*str*/, bool /*transient*/) +- { +- } +- +-diff --git a/src/liborcus/opc_context.cpp b/src/liborcus/opc_context.cpp +-index ef1a591f..d3cddabd 100644 +---- a/src/liborcus/opc_context.cpp +-+++ b/src/liborcus/opc_context.cpp +-@@ -90,17 +90,17 @@ opc_content_types_context::~opc_content_types_context() +- { +- } +- +--bool opc_content_types_context::can_handle_element(xmlns_id_t ns, xml_token_t name) const +-+bool opc_content_types_context::can_handle_element(xmlns_id_t /*ns*/, xml_token_t /*name*/) const +- { +- return true; +- } +- +--xml_context_base* opc_content_types_context::create_child_context(xmlns_id_t ns, xml_token_t name) +-+xml_context_base* opc_content_types_context::create_child_context(xmlns_id_t /*ns*/, xml_token_t /*name*/) +- { +- return nullptr; +- } +- +--void opc_content_types_context::end_child_context(xmlns_id_t ns, xml_token_t name, xml_context_base *child) +-+void opc_content_types_context::end_child_context(xmlns_id_t /*ns*/, xml_token_t /*name*/, xml_context_base* /*child*/) +- { +- } +- +-@@ -153,7 +153,7 @@ bool opc_content_types_context::end_element(xmlns_id_t ns, xml_token_t name) +- return pop_stack(ns, name); +- } +- +--void opc_content_types_context::characters(const pstring &str, bool transient) +-+void opc_content_types_context::characters(const pstring& /*str*/, bool /*transient*/) +- { +- } +- +-@@ -256,17 +256,17 @@ opc_relations_context::~opc_relations_context() +- { +- } +- +--bool opc_relations_context::can_handle_element(xmlns_id_t ns, xml_token_t name) const +-+bool opc_relations_context::can_handle_element(xmlns_id_t /*ns*/, xml_token_t /*name*/) const +- { +- return true; +- } +- +--xml_context_base* opc_relations_context::create_child_context(xmlns_id_t ns, xml_token_t name) +-+xml_context_base* opc_relations_context::create_child_context(xmlns_id_t /*ns*/, xml_token_t /*name*/) +- { +- return nullptr; +- } +- +--void opc_relations_context::end_child_context(xmlns_id_t ns, xml_token_t name, xml_context_base *child) +-+void opc_relations_context::end_child_context(xmlns_id_t /*ns*/, xml_token_t /*name*/, xml_context_base* /*child*/) +- { +- } +- +-@@ -302,7 +302,7 @@ bool opc_relations_context::end_element(xmlns_id_t ns, xml_token_t name) +- return pop_stack(ns, name); +- } +- +--void opc_relations_context::characters(const pstring &str, bool transient) +-+void opc_relations_context::characters(const pstring& /*str*/, bool /*transient*/) +- { +- } +- +-diff --git a/src/liborcus/orcus_json.cpp b/src/liborcus/orcus_json.cpp +-index 2b5967d5..69672190 100644 +---- a/src/liborcus/orcus_json.cpp +-+++ b/src/liborcus/orcus_json.cpp +-@@ -137,7 +137,7 @@ public: +- push_node(json_map_tree::input_node_type::object); +- } +- +-- void object_key(const char* p, size_t len, bool transient) +-+ void object_key(const char* p, size_t len, bool /*transient*/) +- { +- m_walker.set_object_key(p, len); +- } +-@@ -168,7 +168,7 @@ public: +- pop_node(json_map_tree::input_node_type::value); +- } +- +-- void string(const char* p, size_t len, bool transient) +-+ void string(const char* p, size_t len, bool /*transient*/) +- { +- push_node(json_map_tree::input_node_type::value); +- commit_value(json_value(p, len)); +-diff --git a/src/liborcus/orcus_xml_map_def.cpp b/src/liborcus/orcus_xml_map_def.cpp +-index 4c70e060..889dbcb0 100644 +---- a/src/liborcus/orcus_xml_map_def.cpp +-+++ b/src/liborcus/orcus_xml_map_def.cpp +-@@ -43,9 +43,9 @@ public: +- xml_map_sax_handler(orcus_xml& app) : m_app(app) {} +- +- void doctype(const sax::doctype_declaration&) {} +-- void start_declaration(const pstring& name) {} +-+ void start_declaration(const pstring& /*name*/) {} +- +-- void end_declaration(const pstring& name) +-+ void end_declaration(const pstring& /*name*/) +- { +- m_attrs.clear(); +- } +-diff --git a/src/liborcus/spreadsheet_interface.cpp b/src/liborcus/spreadsheet_interface.cpp +-index 87103233..985caf45 100644 +---- a/src/liborcus/spreadsheet_interface.cpp +-+++ b/src/liborcus/spreadsheet_interface.cpp +-@@ -124,13 +124,13 @@ import_reference_resolver* import_factory::get_reference_resolver(formula_ref_co +- } +- +- import_pivot_cache_definition* import_factory::create_pivot_cache_definition( +-- orcus::spreadsheet::pivot_cache_id_t cache_id) +-+ orcus::spreadsheet::pivot_cache_id_t /*cache_id*/) +- { +- return nullptr; +- } +- +- import_pivot_cache_records* import_factory::create_pivot_cache_records( +-- orcus::spreadsheet::pivot_cache_id_t cache_id) +-+ orcus::spreadsheet::pivot_cache_id_t /*cache_id*/) +- { +- return nullptr; +- } +-diff --git a/src/liborcus/xls_xml_context.cpp b/src/liborcus/xls_xml_context.cpp +-index f5b8fe26..b2d6d398 100644 +---- a/src/liborcus/xls_xml_context.cpp +-+++ b/src/liborcus/xls_xml_context.cpp +-@@ -90,17 +90,17 @@ xls_xml_data_context::xls_xml_data_context( +- +- xls_xml_data_context::~xls_xml_data_context() {} +- +--bool xls_xml_data_context::can_handle_element(xmlns_id_t ns, xml_token_t name) const +-+bool xls_xml_data_context::can_handle_element(xmlns_id_t /*ns*/, xml_token_t /*name*/) const +- { +- return true; +- } +- +--xml_context_base* xls_xml_data_context::create_child_context(xmlns_id_t ns, xml_token_t name) +-+xml_context_base* xls_xml_data_context::create_child_context(xmlns_id_t /*ns*/, xml_token_t /*name*/) +- { +- return nullptr; +- } +- +--void xls_xml_data_context::end_child_context(xmlns_id_t ns, xml_token_t name, xml_context_base* child) +-+void xls_xml_data_context::end_child_context(xmlns_id_t /*ns*/, xml_token_t /*name*/, xml_context_base* /*child*/) +- { +- } +- +-@@ -254,7 +254,7 @@ void xls_xml_data_context::reset() +- } +- +- void xls_xml_data_context::start_element_data( +-- const xml_token_pair_t& parent, const xml_attrs_t& attrs) +-+ const xml_token_pair_t& /*parent*/, const xml_attrs_t& attrs) +- { +- m_cell_type = ct_unknown; +- m_cell_string.clear(); +-@@ -776,7 +776,7 @@ xml_context_base* xls_xml_context::create_child_context(xmlns_id_t ns, xml_token +- return nullptr; +- } +- +--void xls_xml_context::end_child_context(xmlns_id_t ns, xml_token_t name, xml_context_base* child) +-+void xls_xml_context::end_child_context(xmlns_id_t /*ns*/, xml_token_t /*name*/, xml_context_base* /*child*/) +- { +- } +- +-@@ -1217,7 +1217,7 @@ void xls_xml_context::characters(const pstring& str, bool /*transient*/) +- } +- } +- +--void xls_xml_context::start_element_borders(const xml_token_pair_t& parent, const xml_attrs_t& attrs) +-+void xls_xml_context::start_element_borders(const xml_token_pair_t& parent, const xml_attrs_t& /*attrs*/) +- { +- xml_element_expected(parent, NS_xls_xml_ss, XML_Style); +- m_current_style->borders.clear(); +-diff --git a/src/liborcus/xls_xml_detection_handler.cpp b/src/liborcus/xls_xml_detection_handler.cpp +-index aaa1b148..2b18c8ee 100644 +---- a/src/liborcus/xls_xml_detection_handler.cpp +-+++ b/src/liborcus/xls_xml_detection_handler.cpp +-@@ -36,7 +36,7 @@ public: +- return nullptr; +- } +- +-- virtual void start_element(xmlns_id_t ns, xml_token_t name, const::std::vector<xml_token_attr_t>& attrs) +-+ virtual void start_element(xmlns_id_t ns, xml_token_t name, const::std::vector<xml_token_attr_t>& /*attrs*/) +- { +- xml_token_pair_t parent = push_stack(ns, name); +- if (ns == NS_xls_xml_ss) +-diff --git a/src/liborcus/xlsx_drawing_context.cpp b/src/liborcus/xlsx_drawing_context.cpp +-index f7dc31ab..380d7852 100644 +---- a/src/liborcus/xlsx_drawing_context.cpp +-+++ b/src/liborcus/xlsx_drawing_context.cpp +-@@ -41,7 +41,7 @@ void xlsx_drawing_context::end_child_context(xmlns_id_t /*ns*/, xml_token_t /*na +- { +- } +- +--void xlsx_drawing_context::start_element(xmlns_id_t ns, xml_token_t name, const::std::vector<xml_token_attr_t>& attrs) +-+void xlsx_drawing_context::start_element(xmlns_id_t ns, xml_token_t name, const::std::vector<xml_token_attr_t>& /*attrs*/) +- { +- xml_token_pair_t parent = push_stack(ns, name); +- +-diff --git a/src/liborcus/xlsx_sheet_context.cpp b/src/liborcus/xlsx_sheet_context.cpp +-index 669f604f..50018c32 100644 +---- a/src/liborcus/xlsx_sheet_context.cpp +-+++ b/src/liborcus/xlsx_sheet_context.cpp +-@@ -845,7 +845,7 @@ void xlsx_sheet_context::push_raw_cell_value() +- } +- +- void xlsx_sheet_context::push_raw_cell_result( +-- range_formula_results& res, size_t row_offset, size_t col_offset, xlsx_session_data& session_data) const +-+ range_formula_results& res, size_t row_offset, size_t col_offset, xlsx_session_data& /*session_data*/) const +- { +- if (m_cur_value.empty()) +- return; +-diff --git a/src/liborcus/xlsx_sheet_context_test.cpp b/src/liborcus/xlsx_sheet_context_test.cpp +-index 9cb0d2a5..11ec8b71 100644 +---- a/src/liborcus/xlsx_sheet_context_test.cpp +-+++ b/src/liborcus/xlsx_sheet_context_test.cpp +-@@ -64,19 +64,19 @@ public: +- assert(formula == "A1:A2"); +- } +- +-- virtual void set_result_bool(row_t row, col_t col, bool value) override +-+ virtual void set_result_bool(row_t, col_t, bool) override +- { +- } +- +-- virtual void set_result_empty(row_t row, col_t col) override +-+ virtual void set_result_empty(row_t, col_t) override +- { +- } +- +-- virtual void set_result_string(row_t row, col_t col, std::string_view) override +-+ virtual void set_result_string(row_t, col_t, std::string_view) override +- { +- } +- +-- virtual void set_result_value(row_t row, col_t col, double value) override +-+ virtual void set_result_value(row_t, col_t, double) override +- { +- } +- +-diff --git a/src/liborcus/xlsx_table_context.cpp b/src/liborcus/xlsx_table_context.cpp +-index e135f44d..d8c360df 100644 +---- a/src/liborcus/xlsx_table_context.cpp +-+++ b/src/liborcus/xlsx_table_context.cpp +-@@ -317,7 +317,7 @@ bool xlsx_table_context::end_element(xmlns_id_t ns, xml_token_t name) +- return pop_stack(ns, name); +- } +- +--void xlsx_table_context::characters(const pstring& str, bool transient) +-+void xlsx_table_context::characters(const pstring& /*str*/, bool /*transient*/) +- { +- } +- +-diff --git a/src/liborcus/xml_structure_tree.cpp b/src/liborcus/xml_structure_tree.cpp +-index 9eaf3c07..5185049e 100644 +---- a/src/liborcus/xml_structure_tree.cpp +-+++ b/src/liborcus/xml_structure_tree.cpp +-@@ -125,11 +125,11 @@ public: +- +- void doctype(const sax::doctype_declaration&) {} +- +-- void start_declaration(const pstring& name) +-+ void start_declaration(const pstring& /*name*/) +- { +- } +- +-- void end_declaration(const pstring& name) +-+ void end_declaration(const pstring& /*name*/) +- { +- m_attrs.clear(); +- } +-@@ -185,7 +185,7 @@ public: +- m_stack.push_back(ref); +- } +- +-- void end_element(const sax_ns_parser_element& elem) +-+ void end_element(const sax_ns_parser_element& /*elem*/) +- { +- if (m_stack.empty()) +- throw general_error("Element stack is empty."); +-diff --git a/src/liborcus/xpath_parser_test.cpp b/src/liborcus/xpath_parser_test.cpp +-index 12242f62..f67c0dc6 100644 +---- a/src/liborcus/xpath_parser_test.cpp +-+++ b/src/liborcus/xpath_parser_test.cpp +-@@ -64,7 +64,7 @@ void test_attributes() +- assert(token.attribute); +- } +- +--int main(int argc, char** argv) +-+int main() +- { +- test_elements(); +- test_attributes(); +-diff --git a/src/orcus_env_dump.cpp b/src/orcus_env_dump.cpp +-index ad60927a..99f53718 100644 +---- a/src/orcus_env_dump.cpp +-+++ b/src/orcus_env_dump.cpp +-@@ -13,7 +13,7 @@ +- using std::cout; +- using std::endl; +- +--int main(int argc, char** argv) +-+int main() +- { +- cout << "CPU flags:" << endl; +- cout << " SSE 4.2: " << orcus::detail::cpu::has_sse42() << endl; +-diff --git a/src/orcus_test_json_mapped.cpp b/src/orcus_test_json_mapped.cpp +-index ed10a842..c504e156 100644 +---- a/src/orcus_test_json_mapped.cpp +-+++ b/src/orcus_test_json_mapped.cpp +-@@ -88,7 +88,7 @@ void test_invalid_map_definition() +- } +- } +- +--int main(int argc, char** argv) +-+int main() +- { +- test_mapped_json_import(); +- test_invalid_map_definition(); +-diff --git a/src/orcus_test_xml.cpp b/src/orcus_test_xml.cpp +-index 2a44a8ac..de5197cf 100644 +---- a/src/orcus_test_xml.cpp +-+++ b/src/orcus_test_xml.cpp +-@@ -85,7 +85,7 @@ const char* sax_parser_parse_only_test_dirs[] = { +- SRCDIR"/test/xml/parse-only/rss/" +- }; +- +--void parse_file(dom::document_tree& tree, const char* filepath, string& strm) +-+void parse_file(dom::document_tree& tree, const char* filepath, std::string& /*strm*/) +- { +- cout << "testing " << filepath << endl; +- file_content content(filepath); +-diff --git a/src/orcus_test_xml_mapped.cpp b/src/orcus_test_xml_mapped.cpp +-index b90ea020..8e18cfda 100644 +---- a/src/orcus_test_xml_mapped.cpp +-+++ b/src/orcus_test_xml_mapped.cpp +-@@ -66,7 +66,7 @@ void test_mapped_xml_import() +- { SRCDIR"/test/xml-mapped/nested-repeats-4", false }, +- }; +- +-- auto dump_xml_structure = [](string& dump_content, string& strm, const char* filepath, xmlns_context& cxt) +-+ auto dump_xml_structure = [](std::string& dump_content, std::string& /*strm*/, const char* filepath, xmlns_context& cxt) +- { +- file_content content(filepath); +- dom::document_tree tree(cxt); +-diff --git a/src/parser/sax_token_parser_test.cpp b/src/parser/sax_token_parser_test.cpp +-index 2647444c..6ff8c932 100644 +---- a/src/parser/sax_token_parser_test.cpp +-+++ b/src/parser/sax_token_parser_test.cpp +-@@ -146,7 +146,7 @@ void test_unicode_string() +- { +- } +- +-- void characters(std::string_view val, bool transient) +-+ void characters(std::string_view val, bool /*transient*/) +- { +- std::cout << "charachters:" << std::endl; +- std::cout << val << std::endl; +-diff --git a/src/parser/sax_token_parser_thread.cpp b/src/parser/sax_token_parser_thread.cpp +-index b9166e3c..d21ae6d7 100644 +---- a/src/parser/sax_token_parser_thread.cpp +-+++ b/src/parser/sax_token_parser_thread.cpp +-@@ -86,7 +86,7 @@ struct parser_thread::impl +- m_token_buffer.abort(); +- } +- +-- void declaration(const orcus::xml_declaration_t& decl) +-+ void declaration(const orcus::xml_declaration_t& /*decl*/) +- { +- } +- +-diff --git a/src/parser/utf8.cpp b/src/parser/utf8.cpp +-index f3b264a7..e02d2244 100644 +---- a/src/parser/utf8.cpp +-+++ b/src/parser/utf8.cpp +-@@ -231,7 +231,7 @@ bool parse_3b_second_char(uint8_t c1, uint8_t c2, uint8_t c3) +- } +- +- // [#x10000-#xEFFFF]: F0 90 80 80 -> F3 AF BF BF +--bool parse_4b_char(uint8_t c1, uint8_t c2, uint8_t c3, uint8_t c4) +-+bool parse_4b_char(uint8_t c1, uint8_t c2, uint8_t /*c3*/, uint8_t /*c4*/) +- { +- // F0 90 80 80 -> F3 AF BF BF +- // - F0 90 xx xx -> F0 xx xx xx +-diff --git a/src/parser/utf8_test.cpp b/src/parser/utf8_test.cpp +-index 78b7656a..88dcd3e8 100644 +---- a/src/parser/utf8_test.cpp +-+++ b/src/parser/utf8_test.cpp +-@@ -159,7 +159,7 @@ void test_xml_name_char() +- assert(res); +- } +- +--int main(int argc, char** argv) +-+int main() +- { +- test_xml_name_start_char(); +- test_xml_name_char(); +-diff --git a/src/parser/xml_writer_test.cpp b/src/parser/xml_writer_test.cpp +-index e5a22357..8687db32 100644 +---- a/src/parser/xml_writer_test.cpp +-+++ b/src/parser/xml_writer_test.cpp +-@@ -28,7 +28,7 @@ void test_encoded_content() +- { +- std::ostringstream os_content; +- +-- void characters(std::string_view val, bool transient) +-+ void characters(std::string_view val, bool /*transient*/) +- { +- os_content << val; +- } +-diff --git a/src/python/cell.cpp b/src/python/cell.cpp +-index 536b5c4d..16374b8f 100644 +---- a/src/python/cell.cpp +-+++ b/src/python/cell.cpp +-@@ -115,7 +115,7 @@ int tp_init(pyobj_cell* self, PyObject* args, PyObject* kwargs) +- return 0; +- } +- +--PyObject* cell_get_formula_tokens(PyObject* self, PyObject* args, PyObject* kwargs) +-+PyObject* cell_get_formula_tokens(PyObject* self, PyObject* /*args*/, PyObject* /*kwargs*/) +- { +- pyobj_cell* obj = reinterpret_cast<pyobj_cell*>(self); +- cell_data& data = *obj->data; +-diff --git a/src/python/document.cpp b/src/python/document.cpp +-index b06463bc..02a2dc49 100644 +---- a/src/python/document.cpp +-+++ b/src/python/document.cpp +-@@ -69,12 +69,12 @@ PyObject* tp_new(PyTypeObject* type, PyObject* /*args*/, PyObject* /*kwargs*/) +- return reinterpret_cast<PyObject*>(self); +- } +- +--int tp_init(pyobj_document* self, PyObject* /*args*/, PyObject* /*kwargs*/) +-+int tp_init(pyobj_document* /*self*/, PyObject* /*args*/, PyObject* /*kwargs*/) +- { +- return 0; +- } +- +--PyObject* doc_get_named_expressions(PyObject* self, PyObject* args, PyObject* kwargs) +-+PyObject* doc_get_named_expressions(PyObject* self, PyObject* /*args*/, PyObject* /*kwargs*/) +- { +- const ss::document& doc = *t(self)->data->m_doc; +- const ixion::model_context& cxt = doc.get_model_context(); +-diff --git a/src/python/formula_tokens.cpp b/src/python/formula_tokens.cpp +-index 569d1a7a..3eece2d4 100644 +---- a/src/python/formula_tokens.cpp +-+++ b/src/python/formula_tokens.cpp +-@@ -56,7 +56,7 @@ void tp_dealloc(pyobj_formula_tokens* self) +- Py_TYPE(self)->tp_free(reinterpret_cast<PyObject*>(self)); +- } +- +--int tp_init(pyobj_formula_tokens* self, PyObject* /*args*/, PyObject* /*kwargs*/) +-+int tp_init(pyobj_formula_tokens* /*self*/, PyObject* /*args*/, PyObject* /*kwargs*/) +- { +- return 0; +- } +-diff --git a/src/python/global.cpp b/src/python/global.cpp +-index 7a21f960..f8623e0d 100644 +---- a/src/python/global.cpp +-+++ b/src/python/global.cpp +-@@ -16,7 +16,7 @@ void set_python_exception(PyObject* type, const std::exception& e) +- { +- std::ostringstream os; +- os << "C++ exception caught: " << e.what(); +-- PyErr_SetString(PyExc_RuntimeError, os.str().data()); +-+ PyErr_SetString(type, os.str().data()); +- } +- +- PyObject* get_python_enum_value(const char* enum_class_name, const char* value_name) +-diff --git a/src/python/json.cpp b/src/python/json.cpp +-index fdeea10c..f22cf666 100644 +---- a/src/python/json.cpp +-+++ b/src/python/json.cpp +-@@ -177,7 +177,7 @@ public: +- } +- } +- +-- void object_key(const char* p, size_t len, bool transient) +-+ void object_key(const char* p, size_t len, bool /*transient*/) +- { +- parser_stack& cur = m_stack.back(); +- cur.key = PyUnicode_FromStringAndSize(p, len); +-@@ -213,7 +213,7 @@ public: +- push_value(Py_None); +- } +- +-- void string(const char* p, size_t len, bool transient) +-+ void string(const char* p, size_t len, bool /*transient*/) +- { +- push_value(PyUnicode_FromStringAndSize(p, len)); +- } +-diff --git a/src/python/named_expression.cpp b/src/python/named_expression.cpp +-index 8edeeacf..1402daa0 100644 +---- a/src/python/named_expression.cpp +-+++ b/src/python/named_expression.cpp +-@@ -81,7 +81,7 @@ PyObject* tp_new(PyTypeObject* type, PyObject* /*args*/, PyObject* /*kwargs*/) +- return reinterpret_cast<PyObject*>(self); +- } +- +--PyObject* ne_get_formula_tokens(PyObject* self, PyObject* args, PyObject* kwargs) +-+PyObject* ne_get_formula_tokens(PyObject* self, PyObject* /*args*/, PyObject* /*kwargs*/) +- { +- named_exp_data& data = *t(self)->data; +- if (!data.tokens) +-diff --git a/src/python/named_expressions.cpp b/src/python/named_expressions.cpp +-index 235389ac..6faffee5 100644 +---- a/src/python/named_expressions.cpp +-+++ b/src/python/named_expressions.cpp +-@@ -44,7 +44,7 @@ inline pyobj_named_exps* t(PyObject* self) +- return reinterpret_cast<pyobj_named_exps*>(self); +- } +- +--PyObject* named_exps_names(PyObject* self, PyObject* args, PyObject* kwargs) +-+PyObject* named_exps_names(PyObject* self, PyObject* /*args*/, PyObject* /*kwargs*/) +- { +- named_exps_data& data = *t(self)->data; +- PyObject* s = PySet_New(nullptr); +-@@ -64,7 +64,7 @@ void tp_dealloc(pyobj_named_exps* self) +- Py_TYPE(self)->tp_free(reinterpret_cast<PyObject*>(self)); +- } +- +--int tp_init(pyobj_named_exps* self, PyObject* /*args*/, PyObject* /*kwargs*/) +-+int tp_init(pyobj_named_exps* /*self*/, PyObject* /*args*/, PyObject* /*kwargs*/) +- { +- return 0; +- } +-diff --git a/src/python/sheet.cpp b/src/python/sheet.cpp +-index 0ccc39bd..38b96241 100644 +---- a/src/python/sheet.cpp +-+++ b/src/python/sheet.cpp +-@@ -85,12 +85,12 @@ PyObject* tp_new(PyTypeObject* type, PyObject* /*args*/, PyObject* /*kwargs*/) +- return reinterpret_cast<PyObject*>(self); +- } +- +--int tp_init(pyobj_sheet* self, PyObject* /*args*/, PyObject* /*kwargs*/) +-+int tp_init(pyobj_sheet* /*self*/, PyObject* /*args*/, PyObject* /*kwargs*/) +- { +- return 0; +- } +- +--PyObject* sheet_get_rows(PyObject* self, PyObject* args, PyObject* kwargs) +-+PyObject* sheet_get_rows(PyObject* self, PyObject* /*args*/, PyObject* /*kwargs*/) +- { +- PyTypeObject* sr_type = get_sheet_rows_type(); +- +-@@ -210,7 +210,7 @@ PyObject* sheet_write(PyObject* self, PyObject* args, PyObject* kwargs) +- return Py_None; +- } +- +--PyObject* sheet_get_named_expressions(PyObject* self, PyObject* args, PyObject* kwargs) +-+PyObject* sheet_get_named_expressions(PyObject* self, PyObject* /*args*/, PyObject* /*kwargs*/) +- { +- const ss::document& doc = *t(self)->data->m_doc; +- ss::sheet_t si = t(self)->data->m_sheet->get_index(); +-diff --git a/src/python/sheet_rows.cpp b/src/python/sheet_rows.cpp +-index 7fa869ea..be495894 100644 +---- a/src/python/sheet_rows.cpp +-+++ b/src/python/sheet_rows.cpp +-@@ -49,7 +49,7 @@ PyObject* sheet_rows_new(PyTypeObject* type, PyObject* /*args*/, PyObject* /*kwa +- return reinterpret_cast<PyObject*>(self); +- } +- +--int sheet_rows_init(pyobj_sheet_rows* self, PyObject* /*args*/, PyObject* /*kwargs*/) +-+int sheet_rows_init(pyobj_sheet_rows* /*self*/, PyObject* /*args*/, PyObject* /*kwargs*/) +- { +- return 0; +- } +-diff --git a/src/spreadsheet/factory_sheet.cpp b/src/spreadsheet/factory_sheet.cpp +-index 3e04295c..61541174 100644 +---- a/src/spreadsheet/factory_sheet.cpp +-+++ b/src/spreadsheet/factory_sheet.cpp +-@@ -74,19 +74,19 @@ void import_data_table::reset() +- { +- } +- +--void import_data_table::set_type(data_table_type_t type) +-+void import_data_table::set_type(data_table_type_t /*type*/) +- { +- } +- +--void import_data_table::set_range(const range_t& range) +-+void import_data_table::set_range(const range_t& /*range*/) +- { +- } +- +--void import_data_table::set_first_reference(std::string_view ref, bool deleted) +-+void import_data_table::set_first_reference(std::string_view /*ref*/, bool /*deleted*/) +- { +- } +- +--void import_data_table::set_second_reference(std::string_view ref, bool deleted) +-+void import_data_table::set_second_reference(std::string_view /*ref*/, bool /*deleted*/) +- { +- } +- +-@@ -193,7 +193,7 @@ void import_array_formula::set_range(const range_t& range) +- } +- } +- +--void import_array_formula::set_formula(formula_grammar_t grammar, std::string_view formula) +-+void import_array_formula::set_formula(formula_grammar_t /*grammar*/, std::string_view formula) +- { +- const ixion::formula_name_resolver* resolver = +- m_doc.get_formula_name_resolver(spreadsheet::formula_ref_context_t::global); +-@@ -223,12 +223,12 @@ void import_array_formula::set_result_value(row_t row, col_t col, double value) +- m_result_mtx.set(row, col, value); +- } +- +--void import_array_formula::set_result_string(row_t row, col_t col, std::string_view value) +-+void import_array_formula::set_result_string(row_t /*row*/, col_t /*col*/, std::string_view /*value*/) +- { +- // TODO : handle this +- } +- +--void import_array_formula::set_result_empty(row_t row, col_t col) +-+void import_array_formula::set_result_empty(row_t /*row*/, col_t /*col*/) +- { +- // TODO : handle this +- } +-@@ -282,7 +282,7 @@ void import_formula::set_position(row_t row, col_t col) +- m_col = col; +- } +- +--void import_formula::set_formula(formula_grammar_t grammar, std::string_view formula) +-+void import_formula::set_formula(formula_grammar_t /*grammar*/, std::string_view formula) +- { +- if (m_row < 0 || m_col < 0) +- return; +-@@ -331,7 +331,7 @@ void import_formula::set_result_string(std::string_view value) +- } +- +- void import_formula::set_result_empty() {} +--void import_formula::set_result_bool(bool value) {} +-+void import_formula::set_result_bool(bool /*value*/) {} +- +- void import_formula::commit() +- { +-diff --git a/src/spreadsheet/sheet_impl.cpp b/src/spreadsheet/sheet_impl.cpp +-index 72e521c5..c2e7ecb6 100644 +---- a/src/spreadsheet/sheet_impl.cpp +-+++ b/src/spreadsheet/sheet_impl.cpp +-@@ -12,7 +12,7 @@ +- +- namespace orcus { namespace spreadsheet { +- +--sheet_impl::sheet_impl(document& doc, sheet& sh, sheet_t sheet_index) : +-+sheet_impl::sheet_impl(document& doc, sheet& /*sh*/, sheet_t sheet_index) : +- m_doc(doc), +- m_col_widths(0, m_doc.get_sheet_size().columns, get_default_column_width()), +- m_row_heights(0, m_doc.get_sheet_size().rows, get_default_row_height()), +--- +-2.25.1 +- +diff --git a/external/liborcus/unused-variables.patch.1 b/external/liborcus/unused-variables.patch.1 +deleted file mode 100644 +index 77b88fae288c..000000000000 +--- a/external/liborcus/unused-variables.patch.1 ++++ /dev/null +@@ -1,24 +0,0 @@ +-From 5fccafa297ce2439ee850e13ccbeea3edb1750af Mon Sep 17 00:00:00 2001 +-From: Kohei Yoshida <kohei.yoshida@gmail.com> +-Date: Tue, 2 Nov 2021 20:42:45 -0400 +-Subject: [PATCH] Unused variables. +- +---- +- include/orcus/sax_parser.hpp | 1 - +- 1 file changed, 1 deletion(-) +- +-diff --git a/include/orcus/sax_parser.hpp b/include/orcus/sax_parser.hpp +-index 24b1e8ea..15e8d917 100644 +---- a/include/orcus/sax_parser.hpp +-+++ b/include/orcus/sax_parser.hpp +-@@ -539,7 +539,6 @@ template<typename _Handler, typename _Config> +- void sax_parser<_Handler,_Config>::attribute() +- { +- sax::parser_attribute attr; +-- std::string_view attr_ns_name, attr_name, attr_value; +- attribute_name(attr.ns, attr.name); +- +- #if ORCUS_DEBUG_SAX_PARSER +--- +-2.25.1 +- +diff --git a/external/liborcus/windows-constants-hack.patch b/external/liborcus/windows-constants-hack.patch +index 51aabfa1fb47..e86c74a722f3 100644 +--- a/external/liborcus/windows-constants-hack.patch ++++ b/external/liborcus/windows-constants-hack.patch +@@ -8,8 +8,8 @@ index ae571f5..539ce18 100644 + + -#include "constants.inl" + +#define ORCUS_MAJOR_VERSION 0 +-+#define ORCUS_MINOR_VERSION 16 +-+#define ORCUS_MICRO_VERSION 0 +++#define ORCUS_MINOR_VERSION 17 +++#define ORCUS_MICRO_VERSION 2 + + namespace orcus { + +diff --git a/sc/source/filter/orcus/interface.cxx b/sc/source/filter/orcus/interface.cxx +index 674c2cfe7c8f..f5f2fd8a11c0 100644 +--- a/sc/source/filter/orcus/interface.cxx ++++ b/sc/source/filter/orcus/interface.cxx +@@ -1725,16 +1725,15 @@ void ScOrcusStyles::set_font_underline_color(orcus::spreadsheet::color_elem_t al + orcus::spreadsheet::color_elem_t green, + orcus::spreadsheet::color_elem_t blue) + { +- maCurrentFont.maUnderlineColor = Color(ColorTransparency, alpha, red, green, blue); ++ maCurrentFont.maUnderlineColor = Color(ColorAlpha, alpha, red, green, blue); + } + +-void ScOrcusStyles::set_font_color(orcus::spreadsheet::color_elem_t /*alpha*/, ++void ScOrcusStyles::set_font_color(orcus::spreadsheet::color_elem_t alpha, + orcus::spreadsheet::color_elem_t red, + orcus::spreadsheet::color_elem_t green, + orcus::spreadsheet::color_elem_t blue) + { +- // Ignore the alpha value for now. +- maCurrentFont.maColor = Color(red, green, blue); ++ maCurrentFont.maColor = Color(ColorAlpha, alpha, red, green, blue); + maCurrentFont.mbHasFontAttr = true; + } + +-- +cgit v1.2.1 +