diff options
author | Benjamin Dauvergne <bdauvergne@entrouvert.com> | 2012-05-05 23:18:32 +0200 |
---|---|---|
committer | Benjamin Dauvergne <bdauvergne@entrouvert.com> | 2012-05-05 23:18:32 +0200 |
commit | e6d904800420ff67703f935184369450b4dfd086 (patch) | |
tree | 15dffbb9cf5981df8b5eb3ffcc32f5b0831f3b3a /bindings/python | |
parent | 1473b92b8636bf9f7325ef304a627e5258fbc659 (diff) | |
download | lasso-e6d904800420ff67703f935184369450b4dfd086.tar.gz lasso-e6d904800420ff67703f935184369450b4dfd086.tar.xz lasso-e6d904800420ff67703f935184369450b4dfd086.zip |
[bindings/python] in constructors wrappers build the return value before
Diffstat (limited to 'bindings/python')
-rw-r--r-- | bindings/python/lang.py | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/bindings/python/lang.py b/bindings/python/lang.py index d38c37bb..4c3d7cc5 100644 --- a/bindings/python/lang.py +++ b/bindings/python/lang.py @@ -982,6 +982,17 @@ register_constants(PyObject *d) print >> fd, ' ', print >> fd, '%s(%s);' % (m.name, ', '.join([ref_name(x) for x in m.args])) + if m.return_type: + # Constructor so decrease refcount (it was incremented by PyGObjectPtr_New called + # in self.return_value + try: + self.return_value(fd, m.return_arg) + except: + print >>sys.stderr, 'W: cannot assign return value of', m + raise + + if is_transfer_full(m.return_arg, default=True): + self.free_value(fd, m.return_arg, name = 'return_value') for f, arg in zip(parse_tuple_format, m.args): if is_out(arg): self.return_value(fd, arg, return_var_name = arg[1], return_pyvar_name = 'out_pyvalue') @@ -1002,16 +1013,6 @@ register_constants(PyObject *d) if not m.return_type: print >> fd, ' return noneRef();' else: - # Constructor so decrease refcount (it was incremented by PyGObjectPtr_New called - # in self.return_value - try: - self.return_value(fd, m.return_arg) - except: - print >>sys.stderr, 'W: cannot assign return value of', m - raise - - if is_transfer_full(m.return_arg): - self.free_value(fd, m.return_arg, name = 'return_value') print >> fd, ' return return_pyvalue;' print >> fd, '}' print >> fd, '' |