diff options
author | Marcelo Lira <marcelo.lira@openbossa.org> | 2010-02-12 01:42:03 -0300 |
---|---|---|
committer | Marcelo Lira <marcelo.lira@openbossa.org> | 2010-02-12 15:24:39 -0300 |
commit | fb5c0970b0ada2fb5029757ecda17b11eee1ead1 (patch) | |
tree | f00af0a9cfe976e4b8ab68592aa31406c1f6f337 /shibokengenerator.cpp | |
parent | 2c07ee6229c012ee3624fcdf0fbb281bfef964d7 (diff) |
The method needsReferenceCountControl checks also in the class' ancestry.
ShibokenGenerator::needsReferenceCountControl checks the object
and all its ancestry for the need to support reference counting
control of other objects pointed by the present class.
Diffstat (limited to 'shibokengenerator.cpp')
-rw-r--r-- | shibokengenerator.cpp | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/shibokengenerator.cpp b/shibokengenerator.cpp index 82eff597b..f94155e9c 100644 --- a/shibokengenerator.cpp +++ b/shibokengenerator.cpp @@ -1093,9 +1093,13 @@ bool ShibokenGenerator::hasMultipleInheritanceInAncestry(const AbstractMetaClass bool ShibokenGenerator::needsReferenceCountControl(const AbstractMetaClass* metaClass) { - if (!metaClass->fields().isEmpty()) + if (!metaClass->fields().isEmpty() || hasMethodsWithReferenceCountModifications(metaClass)) return true; - return hasMethodsWithReferenceCountModifications(metaClass); + foreach (const AbstractMetaClass* parent, getBaseClasses(metaClass)) { + if (needsReferenceCountControl(parent)) + return true; + } + return false; } bool ShibokenGenerator::hasMethodsWithReferenceCountModifications(const AbstractMetaClass* metaClass) |