aboutsummaryrefslogtreecommitdiffstats
path: root/libshiboken
diff options
context:
space:
mode:
authorRenato Filho <renato.filho@openbossa.org>2011-05-13 17:47:49 -0300
committerHugo Parente Lima <hugo.pl@gmail.com>2012-03-08 16:15:23 -0300
commit510e7af9a0e9a8b8c0b90ad76453d9ccdf55aedb (patch)
treee1a3caaf4e47249941da5cf88c8f21527f1718ea /libshiboken
parented5af2558722705d38a33fc9b98cf93ccdfae9dd (diff)
Fixed keep reference funcion.
The keepReference function does not increase the referece of all objects if the argument is a list. Fixes bug #854. Reviewer: Hugo Parente <hugo.lima@openbossa.org> Luciano Wolf <luciano.wolf@openbossa.org>
Diffstat (limited to 'libshiboken')
-rw-r--r--libshiboken/basewrapper.cpp14
1 files changed, 8 insertions, 6 deletions
diff --git a/libshiboken/basewrapper.cpp b/libshiboken/basewrapper.cpp
index 3ea0507ef..f1165d911 100644
--- a/libshiboken/basewrapper.cpp
+++ b/libshiboken/basewrapper.cpp
@@ -1089,7 +1089,7 @@ void keepReference(SbkObject* self, const char* key, PyObject* referredObject, b
RefCountMap& refCountMap = *(self->d->referredObjects);
if (!isNone)
- incRefPyObject(referredObject);
+ Py_INCREF(referredObject);
RefCountMap::iterator iter = refCountMap.find(key);
if (!append && (iter != refCountMap.end())) {
@@ -1098,11 +1098,13 @@ void keepReference(SbkObject* self, const char* key, PyObject* referredObject, b
}
if (!isNone) {
- std::list<SbkObject*> values = splitPyObject(referredObject);
- if (append && (iter != refCountMap.end()))
- refCountMap[key].insert(refCountMap[key].end(), values.begin(), values.end());
- else
- refCountMap[key] = values;
+ if (append && (iter != refCountMap.end())) {
+ refCountMap[key].push_back(reinterpret_cast<SbkObject*>(referredObject));
+ } else {
+ std::list<SbkObject*> new_list;
+ new_list.push_back(reinterpret_cast<SbkObject*>(referredObject));
+ refCountMap[key] = new_list;;
+ }
}
}