diff --git a/external/libstaroffice/0001-Fix-equality-operator-arguments.patch.1 b/external/libstaroffice/0001-Fix-equality-operator-arguments.patch.1 new file mode 100644 index 000000000000..27fd97727e25 --- /dev/null +++ b/external/libstaroffice/0001-Fix-equality-operator-arguments.patch.1 @@ -0,0 +1,56 @@ +From 9c0ff663659a28720c4ee3f5752bb8ce8121648f Mon Sep 17 00:00:00 2001 +From: Stephan Bergmann +Date: Mon, 21 Oct 2019 17:17:48 +0200 +Subject: [PATCH] Fix equality operator arguments + +...which avoids overload resolution ambiguities in C++20, when a synthesized +candidate of operator == for a reversed-argument rewrite conflicts with the +actual operator ==, as one is a template specialization for int and the other +for float. (As observed with recent Clang 10 trunk with -std=c++2a when +building libstaroffice as part of LibreOffice: + +> STOFFChart.cxx:230:63: error: use of overloaded operator '==' is ambiguous (with operand types 'STOFFVec2f' (aka 'STOFFVec2') and 'STOFFVec2i' (aka 'STOFFVec2')) +> bool autoPlace=m_legendPosition==STOFFBox2f()||m_dimension==STOFFVec2i(); +> ~~~~~~~~~~~^ ~~~~~~~~~~~~ +> ./libstaroffice_internal.hxx:687:8: note: candidate function +> bool operator==(STOFFVec2 const &p) const +> ^ +> ./libstaroffice_internal.hxx:687:8: note: candidate function (with reversed parameter order) +> STOFFChart.cxx:270:63: error: use of overloaded operator '==' is ambiguous (with operand types 'STOFFVec2f' (aka 'STOFFVec2') and 'STOFFVec2i' (aka 'STOFFVec2')) +> bool autoPlace=m_plotAreaPosition==STOFFBox2f()||m_dimension==STOFFVec2i(); +> ~~~~~~~~~~~^ ~~~~~~~~~~~~ +> ./libstaroffice_internal.hxx:687:8: note: candidate function +> bool operator==(STOFFVec2 const &p) const +> ^ +> ./libstaroffice_internal.hxx:687:8: note: candidate function (with reversed parameter order) + +) +--- + src/lib/STOFFChart.cxx | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/lib/STOFFChart.cxx b/src/lib/STOFFChart.cxx +index 3e7310c..b861762 100644 +--- a/src/lib/STOFFChart.cxx ++++ b/src/lib/STOFFChart.cxx +@@ -227,7 +227,7 @@ void STOFFChart::sendChart(STOFFSpreadsheetListenerPtr &listener, librevenge::RV + + // legend + if (m_legend.m_show) { +- bool autoPlace=m_legendPosition==STOFFBox2f()||m_dimension==STOFFVec2i(); ++ bool autoPlace=m_legendPosition==STOFFBox2f()||m_dimension==STOFFVec2f(); + style=librevenge::RVNGPropertyList(); + m_legend.addStyleTo(style); + style.insert("librevenge:chart-id", styleId); +@@ -267,7 +267,7 @@ void STOFFChart::sendChart(STOFFSpreadsheetListenerPtr &listener, librevenge::RV + } + // plot area + style=librevenge::RVNGPropertyList(); +- bool autoPlace=m_plotAreaPosition==STOFFBox2f()||m_dimension==STOFFVec2i(); ++ bool autoPlace=m_plotAreaPosition==STOFFBox2f()||m_dimension==STOFFVec2f(); + m_plotAreaStyle.addTo(style); + style.insert("librevenge:chart-id", styleId); + style.insert("chart:include-hidden-cells","false"); +-- +2.21.0 + diff --git a/external/libstaroffice/UnpackedTarball_libstaroffice.mk b/external/libstaroffice/UnpackedTarball_libstaroffice.mk index f2c9ccc460af..0e51f67625ac 100644 --- a/external/libstaroffice/UnpackedTarball_libstaroffice.mk +++ b/external/libstaroffice/UnpackedTarball_libstaroffice.mk @@ -29,8 +29,11 @@ $(eval $(call gb_UnpackedTarball_add_patches,libstaroffice, \ )) endif +# * external/libstaroffice/0001-Fix-equality-operator-arguments.patch.1 is upstream at +# "Fix equality operator arguments": $(eval $(call gb_UnpackedTarball_add_patches,libstaroffice,\ external/libstaroffice/0001-add-missing-include-for-std-max.patch.1 \ + external/libstaroffice/0001-Fix-equality-operator-arguments.patch.1 \ )) # vim: set noet sw=4 ts=4: