stoc/source/inspect/introspection.cxx | 25 +++++++------------------ 1 file changed, 7 insertions(+), 18 deletions(-)
New commits: commit a65b1498035a468377fac09f33696da583aabdfc Merge: a313cf8... fd4c879... Author: Stephan Bergmann <sberg...@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 <hunt...@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; } _______________________________________________ Libreoffice-commits mailing list Libreoffice-commits@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits