extensions/source/propctrlr/stringrepresentation.cxx |   25 ++++++++++++++++++-
 1 file changed, 24 insertions(+), 1 deletion(-)

New commits:
commit 90826f5ee457449d78608e00bf05be412a86faf4
Author: Stephan Bergmann <sberg...@redhat.com>
Date:   Mon Aug 19 14:10:41 2013 +0200

    fdo#67109: Order of XConstantsTypeDescription.getConstants is unspecified
    
    ...it looks like it used to be the order the constants appeared in the .idl
    file, while now it happens to be the lexicographical order of the constant's
    names.  For all the constant groups in com.sun.star.report the order 
expected by
    the code appears to be the order of the constant's numeric values (which 
happens
    to coincide with the order of appearance in the .idl files), so explicitly 
sort
    them that way.
    
    Change-Id: I550401b2742fffb7c96a7787498967a7cd78fff8
    (cherry picked from commit def066bb6559e8c77eeb924db1356f9848f5c8a2)
    Reviewed-on: https://gerrit.libreoffice.org/5512
    Reviewed-by: Petr Mladek <pmla...@suse.cz>
    Tested-by: Petr Mladek <pmla...@suse.cz>

diff --git a/extensions/source/propctrlr/stringrepresentation.cxx 
b/extensions/source/propctrlr/stringrepresentation.cxx
index a68c8d0..4c8d4aa 100644
--- a/extensions/source/propctrlr/stringrepresentation.cxx
+++ b/extensions/source/propctrlr/stringrepresentation.cxx
@@ -32,6 +32,7 @@
 #include <com/sun/star/util/Date.hpp>
 #include <com/sun/star/util/Time.hpp>
 #include <comphelper/sequence.hxx>
+#include <comphelper/sequenceasvector.hxx>
 #include <connectivity/dbconversion.hxx>
 #include "formresid.hrc"
 #include <tools/debug.hxx>
@@ -223,6 +224,24 @@ uno::Any SAL_CALL 
StringRepresentation::convertToPropertyValue(const OUString &
     return aReturn;
 }
 
+namespace {
+
+// This comparison functor assumes an underlying set of constants with pairwise
+// unequal values that are all of UNO SHORT or LONG type:
+struct CompareConstants {
+    bool operator ()(
+        css::uno::Reference< css::reflection::XConstantTypeDescription > const 
&
+            c1,
+        css::uno::Reference< css::reflection::XConstantTypeDescription > const 
&
+            c2) const
+    {
+        return c1->getConstantValue().get<sal_Int32>()
+            < c2->getConstantValue().get<sal_Int32>();
+    }
+};
+
+}
+
 // lang::XInitialization:
 void SAL_CALL StringRepresentation::initialize(const uno::Sequence< uno::Any > 
& aArguments) throw (uno::RuntimeException, uno::Exception)
 {
@@ -244,7 +263,11 @@ void SAL_CALL StringRepresentation::initialize(const 
uno::Sequence< uno::Any > &
                     uno::UNO_QUERY_THROW );
 
                 m_xTypeDescription.set( xTypeDescProv->getByHierarchicalName( 
sConstantName ), uno::UNO_QUERY_THROW );
-                m_aConstants = m_xTypeDescription->getConstants();
+                comphelper::SequenceAsVector<
+                    uno::Reference< reflection::XConstantTypeDescription > >
+                    cs(m_xTypeDescription->getConstants());
+                std::sort(cs.begin(), cs.end(), CompareConstants());
+                cs >> m_aConstants;
             }
         }
     }
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to