[Libreoffice-commits] .: 2 commits - stoc/source

Stephan Bergmann sbergmann at kemper.freedesktop.org
Tue Oct 4 23:54:12 PDT 2011


 stoc/source/inspect/introspection.cxx |   25 +++++++------------------
 1 file changed, 7 insertions(+), 18 deletions(-)

New commits:
commit a65b1498035a468377fac09f33696da583aabdfc
Merge: a313cf8... fd4c879...
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Wed Oct 5 08:53:56 2011 +0200

    Merge branch 'master' of git://anongit.freedesktop.org/libreoffice/core

commit a313cf86071795bbd051feb9b99258be0a5c8c48
Author: Kevin Hunter <hunteke at earlham.edu>
Date:   Tue Oct 4 12:58:10 2011 -0400

    Fix logic of isDerivedFrom function
    
    From an email conversation with Stephen Bergmann
    
    "I think the real intent always was to actually look through all the
    returned getSuperclasses(), and the error that superclasses past the
    first one are effectively ignored has never been noticed."

diff --git a/stoc/source/inspect/introspection.cxx b/stoc/source/inspect/introspection.cxx
index 36f1acc..dd6e32c 100644
--- a/stoc/source/inspect/introspection.cxx
+++ b/stoc/source/inspect/introspection.cxx
@@ -110,29 +110,18 @@ sal_Bool isDerivedFrom( Reference<XIdlClass> xToTestClass, Reference<XIdlClass>
 {
     Sequence< Reference<XIdlClass> > aClassesSeq = xToTestClass->getSuperclasses();
     const Reference<XIdlClass>* pClassesArray = aClassesSeq.getConstArray();
+
     sal_Int32 nSuperClassCount = aClassesSeq.getLength();
-    sal_Int32 i;
-    for( i = 0 ;
-         i < nSuperClassCount ;
-         /* No "increment" expression needed as the body always
-          * returns, and in fact MSVC warns about unreachable code if
-          * we include one. On the other hand, what's the point in
-          * using a for loop here then if all we ever will look at is
-          * pClassesArray[0] ?
-          */ )
+    for ( sal_Int32 i = 0; i < nSuperClassCount; ++i )
     {
         const Reference<XIdlClass>& rxClass = pClassesArray[i];
-        if( xDerivedFromClass->equals( rxClass ) )
-        {
-            // Treffer
+
+        if ( xDerivedFromClass->equals( rxClass ) ||
+             isDerivedFrom( rxClass, xDerivedFromClass )
+           )
             return sal_True;
-        }
-        else
-        {
-            // Rekursiv weitersuchen
-            return isDerivedFrom( rxClass, xDerivedFromClass );
-        }
     }
+
     return sal_False;
 }
 


More information about the Libreoffice-commits mailing list