From: Kohei Yoshida Date: Mon, 1 Nov 2021 18:01:22 +0000 (-0400) Subject: Upgrade mdds and liborcus to 2.0.0 and 0.17.0, respectively. X-Git-Tag: archive/raspbian/1%7.2.4-2+rpi1^2~2 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=96148293a3c0cfd5cab39f0b313e97dba65c216e;p=libreoffice.git Upgrade mdds and liborcus to 2.0.0 and 0.17.0, respectively. Change-Id: I9e856fc2d61f1789a6f1702514837860539a0f49 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/124573 Tested-by: Jenkins Tested-by: René Engelhard Reviewed-by: Kohei Yoshida Gbp-Pq: Name mdds-2.0-and-orcus-0.17.diff --- diff --git a/RepositoryExternal.mk b/RepositoryExternal.mk index 3ecde892403..f29eb568baf 100644 --- a/RepositoryExternal.mk +++ b/RepositoryExternal.mk @@ -3294,7 +3294,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), \ @@ -3313,7 +3313,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 6e27d476db0..8a35bfad4cf 100644 Binary files a/configure.ac and b/configure.ac differ diff --git a/cui/source/dialogs/AdditionsDialog.cxx b/cui/source/dialogs/AdditionsDialog.cxx index 5ca2d10051e..e863906975b 100644 --- a/cui/source/dialogs/AdditionsDialog.cxx +++ b/cui/source/dialogs/AdditionsDialog.cxx @@ -54,7 +54,6 @@ #include #include #include -#include #define PAGE_SIZE 30 @@ -158,62 +157,37 @@ void parseResponse(const std::string& rResponse, std::vector& 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 191bb2b911a..61193c7886a 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 := 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 := c700d1325f744104d9fca0d5a019434901e9d51a16eedfb05792f90a298587a4 -export ORCUS_TARBALL := liborcus-0.16.1.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/ExternalPackage_liborcus.mk b/external/liborcus/ExternalPackage_liborcus.mk index 747691809d2..13d61a8fecb 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 c7dd76ebfee..76a2a6afb1f 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 4e46591b98f..f2665775627 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/Library_orcus.mk b/external/liborcus/Library_orcus.mk index 0a0ca582882..3c318797a03 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 710d126a8c1..87e462e33d9 100644 --- a/external/liborcus/UnpackedTarball_liborcus.mk +++ b/external/liborcus/UnpackedTarball_liborcus.mk @@ -15,17 +15,16 @@ $(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 \ 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/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 e3430881053..00000000000 --- 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?= -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(mp_char, mp_end); -+} -+ -+int parser_base::is_name_start_char() -+{ -+ return is_name_char_helper(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(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 @@ -+ -+ -+ 4 -+ --- -2.26.2 - diff --git a/external/liborcus/inc/pch/precompiled_orcus-parser.hxx b/external/liborcus/inc/pch/precompiled_orcus-parser.hxx index 1427148445d..a8047d5c9e0 100644 --- a/external/liborcus/inc/pch/precompiled_orcus-parser.hxx +++ b/external/liborcus/inc/pch/precompiled_orcus-parser.hxx @@ -69,7 +69,6 @@ #include #include #include -#include #include #include #include diff --git a/external/liborcus/inc/pch/precompiled_orcus.hxx b/external/liborcus/inc/pch/precompiled_orcus.hxx index 9edb13aec79..9543b44eb7c 100644 --- a/external/liborcus/inc/pch/precompiled_orcus.hxx +++ b/external/liborcus/inc/pch/precompiled_orcus.hxx @@ -81,7 +81,6 @@ #include #include #include -#include #include #include #include diff --git a/external/liborcus/include.patch.0 b/external/liborcus/include.patch.0 deleted file mode 100644 index a3275b1b13f..00000000000 --- 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 - #include -+#include - #include - #include - #include ---- src/liborcus/xls_xml_context.cpp -+++ src/liborcus/xls_xml_context.cpp -@@ -16,6 +16,7 @@ - #include - - #include -+#include - - 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 -+#include - - using namespace std; - diff --git a/external/liborcus/std-get-busted.patch.1 b/external/liborcus/std-get-busted.patch.1 new file mode 100644 index 00000000000..40b839f65f4 --- /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 +Date: Tue, 2 Nov 2021 22:07:51 -0400 +Subject: [PATCH] std::get(...) 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 +-#include ++#include + + namespace orcus { + +@@ -37,7 +37,7 @@ struct ORCUS_DLLPUBLIC config + }; + + // TODO: add config for other formats as needed. +- using data_type = std::variant; ++ using data_type = boost::variant; + + /** + * 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 +-#include + #include + #include + #include + ++#include ++ + 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; ++ using value_type = boost::variant; + + 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 + #include + #include +-#include ++#include + + namespace orcus { + +@@ -47,7 +47,7 @@ enum class parse_token_t + + struct ORCUS_PSR_DLLPUBLIC parse_token + { +- using value_type = std::variant; ++ using value_type = boost::variant; + + 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 +-#include + #include + #include + ++#include ++ + namespace orcus { + + class tokens; +@@ -36,7 +37,7 @@ enum class parse_token_t + + struct ORCUS_PSR_DLLPUBLIC parse_token + { +- using value_type = std::variant; ++ using value_type = boost::variant; + + 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 + #include + #include +-#include + #include + ++#include ++ + namespace ixion { + + struct abs_range_t; +@@ -36,7 +37,7 @@ using pivot_cache_indices_t = std::vector; + + struct ORCUS_SPM_DLLPUBLIC pivot_cache_record_value_t + { +- using value_type = std::variant; ++ using value_type = boost::variant; + + enum class record_type + { +@@ -66,7 +67,7 @@ using pivot_cache_record_t = std::vector; + + struct ORCUS_SPM_DLLPUBLIC pivot_cache_item_t + { +- using value_type = std::variant; ++ using value_type = boost::variant; + + 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(t.value)); ++ m_handler.number(boost::get(t.value)); + break; + case json::parse_token_t::object_key: + { +- auto s = std::get(t.value); ++ auto s = boost::get(t.value); + m_handler.object_key(s.data(), s.size(), false); + break; + } + case json::parse_token_t::string: + { +- auto s = std::get(t.value); ++ auto s = boost::get(t.value); + m_handler.string(s.data(), s.size(), false); + break; + } + case json::parse_token_t::parse_error: + { +- auto v = std::get(t.value); ++ auto v = boost::get(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(t.value); ++ const auto* elem = boost::get(t.value); + m_handler.start_element(*elem); + break; + } + case sax::parse_token_t::end_element: + { +- const auto* elem = std::get(t.value); ++ const auto* elem = boost::get(t.value); + m_handler.end_element(*elem); + break; + } + case sax::parse_token_t::characters: + { +- auto s = std::get(t.value); ++ auto s = boost::get(t.value); + m_handler.characters(s, false); + break; + } + case sax::parse_token_t::parse_error: + { +- auto v = std::get(t.value); ++ auto v = boost::get(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(v.value); ++ auto s = boost::get(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(v.value); ++ auto c = boost::get(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(v.value); ++ auto c = boost::get(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(v.value); ++ auto c = boost::get(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(v.value); ++ auto c = boost::get(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(v.value); ++ os << boost::get(v.value); + break; + case css::property_value_t::url: +- os << "url(" << std::get(v.value) << ")"; ++ os << "url(" << boost::get(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(m_app_config.data); ++ auto csv = boost::get(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(m_app_config.data); ++ auto csv = boost::get(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(opt.data); ++ auto csv = boost::get(opt.data); + + if (vm.count("row-header")) + csv.header_row_size = vm["row-header"].as(); +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(conf.data).header_row_size = 0; +- std::get(conf.data).split_to_multiple_sheets = true; ++ boost::get(conf.data).header_row_size = 0; ++ boost::get(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(conf.data).header_row_size = 1; ++ boost::get(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(conf.data).split_to_multiple_sheets = false; ++ boost::get(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(item.value)); +- assert(std::get(item.value) <= *fld->max_value); ++ assert(*fld->min_value <= boost::get(item.value)); ++ assert(boost::get(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(t.value) << ")" << endl; ++ os << "- number (v=" << boost::get(t.value) << ")" << endl; + break; + case parse_token_t::object_key: +- os << "- object_key (v=" << std::get(t.value) << ")" << endl; ++ os << "- object_key (v=" << boost::get(t.value) << ")" << endl; + break; + case parse_token_t::parse_error: + { +- auto v = std::get(t.value); ++ auto v = boost::get(t.value); + os << "- parse_error (v=" << v.str << ", offset=" << v.offset << ")" << endl; + break; + } + case parse_token_t::string: +- os << "- string (" << std::get(t.value) << ")" << endl; ++ os << "- string (" << boost::get(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/windows-constants-hack.patch b/external/liborcus/windows-constants-hack.patch index 51aabfa1fb4..e86c74a722f 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/external/mdds/UnpackedTarball_mdds.mk b/external/mdds/UnpackedTarball_mdds.mk index 3c664336430..cf5bd48a1eb 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 -# "-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 ba28cb18ede..00000000000 --- 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 00000000000..c0c29471c9e --- /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 +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 + 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, "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 00000000000..ebfc94fbf10 --- /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 +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(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/column.hxx b/sc/inc/column.hxx index 07b8f061bd8..7b945f30ab8 100644 --- a/sc/inc/column.hxx +++ b/sc/inc/column.hxx @@ -122,8 +122,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 c4a2eb83413..ba7a2e54d7e 100644 --- a/sc/inc/mtvelements.hxx +++ b/sc/inc/mtvelements.hxx @@ -25,10 +25,10 @@ #define MDDS_MULTI_TYPE_VECTOR_DEBUG 1 #endif -#include -#include -#include -#include +#include +#include +#include +#include #include #include @@ -95,23 +95,32 @@ 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 +{ + 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 CNoteFunc; -typedef mdds::multi_type_vector CellNoteStoreType; +typedef mdds::mtv::soa::multi_type_vector CellNoteStoreType; /// Broadcaster storage container typedef mdds::mtv::custom_block_func1 BCBlkFunc; -typedef mdds::multi_type_vector BroadcasterStoreType; +typedef mdds::mtv::soa::multi_type_vector BroadcasterStoreType; /// Cell text attribute container. typedef mdds::mtv::custom_block_func1 CTAttrFunc; -typedef mdds::multi_type_vector CellTextAttrStoreType; +typedef mdds::mtv::soa::multi_type_vector CellTextAttrStoreType; /// Cell container typedef mdds::mtv::custom_block_func3 CellFunc; -typedef mdds::multi_type_vector CellStoreType; +typedef mdds::mtv::soa::multi_type_vector CellStoreType; /** * Store position data for column array storage. diff --git a/sc/source/core/data/column.cxx b/sc/source/core/data/column.cxx index 8cdbf7e9386..a8d64353b81 100644 --- a/sc/source/core/data/column.cxx +++ b/sc/source/core/data/column.cxx @@ -81,8 +81,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 3f30bbe326a..38a64b189d6 100644 --- a/sc/source/core/data/column3.cxx +++ b/sc/source/core/data/column3.cxx @@ -155,6 +155,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 792b4e9d60e..f1a6b26aba2 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) diff --git a/sc/source/filter/inc/orcusinterface.hxx b/sc/source/filter/inc/orcusinterface.hxx index f92125d207c..a00591fb80a 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; }; @@ -638,8 +638,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 78b9563bc84..f80c93c6c71 100644 --- a/sc/source/filter/orcus/interface.cxx +++ b/sc/source/filter/orcus/interface.cxx @@ -159,9 +159,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(), @@ -171,7 +171,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()); } @@ -183,9 +183,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(), @@ -195,7 +195,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()); } @@ -230,13 +230,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."); } @@ -307,9 +307,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) { @@ -343,9 +343,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. @@ -775,7 +775,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"); } @@ -791,7 +791,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"); @@ -885,7 +885,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"); } @@ -928,7 +928,7 @@ void ScOrcusFormula::reset() mnSharedFormulaIndex = 0; mbShared = false; meResType = ResultType::NotSet; - mnResult = 0; + maResult.clear(); mfResult = 0.0; } @@ -940,7 +940,6 @@ ScOrcusFormula::ScOrcusFormula( ScOrcusSheet& rSheet ) : mnSharedFormulaIndex(0), mbShared(false), meResType(ResultType::NotSet), - mnResult(0), mfResult(0.0) {} ScOrcusFormula::~ScOrcusFormula() {} @@ -951,9 +950,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); } @@ -969,10 +968,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() @@ -1026,9 +1025,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: @@ -1071,10 +1068,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*/) @@ -1082,7 +1079,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 } @@ -1156,16 +1153,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(); } @@ -1255,15 +1252,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); } @@ -1279,7 +1276,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*/) { } @@ -1294,9 +1291,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() @@ -1608,9 +1605,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; } @@ -1725,16 +1722,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; } @@ -1983,9 +1979,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; } @@ -2139,9 +2135,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; } @@ -2156,9 +2152,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; } @@ -2213,9 +2209,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 f063bd3b552..db2d5705d51 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(aPath8.getStr()); + content = std::make_unique(aPath8); } #else - auto content = std::make_unique(aPath8.getStr()); + auto content = std::make_unique(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 1f3ee58220a..9c73a75436b 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 7475263044e..f125552296e 100644 --- a/sfx2/source/control/emojiview.cxx +++ b/sfx2/source/control/emojiview.cxx @@ -21,7 +21,6 @@ #include #include -#include #include #include #include @@ -122,7 +121,7 @@ void EmojiView::Populate() aEmojiInfo.load(msJSONData, config); node root = aEmojiInfo.get_document_root(); - std::vector keys = root.keys(); + std::vector 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 aEmojiParams = value.keys(); + std::vector 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 f44f11ebb5f..40d94384842 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.45.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.01.0.tar.xz",