summaryrefslogtreecommitdiffstats
path: root/bindings
diff options
context:
space:
mode:
authorFrederic Peters <fpeters@entrouvert.com>2008-04-29 12:02:26 +0000
committerFrederic Peters <fpeters@entrouvert.com>2008-04-29 12:02:26 +0000
commit61bd776bba2ba9f30d334dd1e451c4f15830bec3 (patch)
tree6536b31ea2b5a2dbc7be8d62de14bed7cf7cb020 /bindings
parentc1bf8393fb0d546ed14a53377d0e9074fdce8b95 (diff)
[project @ fpeters@0d.be-20071006180132-1t68niy6jyj26k88]
bugfix for string members Original author: Frederic Peters <fpeters@0d.be> Date: 2007-10-06 20:01:32.249000+02:00
Diffstat (limited to 'bindings')
-rw-r--r--bindings/lang_python.py7
1 files changed, 5 insertions, 2 deletions
diff --git a/bindings/lang_python.py b/bindings/lang_python.py
index 85be9e7a..31656083 100644
--- a/bindings/lang_python.py
+++ b/bindings/lang_python.py
@@ -341,6 +341,8 @@ register_constants(PyObject *d)
if self.is_pygobject(m[0]):
print >> fd, ' return_value = g_object_ref(this->%s);' % m[1];
+ elif m[0] in ('char*', 'const char*', 'gchar*', 'const gchar*'):
+ print >> fd, ' return_value = g_strdup(this->%s);' % m[1]
else:
print >> fd, ' return_value = this->%s;' % m[1];
@@ -360,7 +362,7 @@ register_constants(PyObject *d)
arg_type = m[0]
if m[0] in ('char*', 'const char*', 'gchar*', 'const gchar*'):
arg_type = arg_type.replace('const ', '')
- parse_format = 's'
+ parse_format = 'z'
parse_arg = '&value'
print >> fd, ' %s value;' % arg_type
elif arg_type in ['int', 'gint', 'gboolean', 'const gboolean'] + self.binding_data.enums:
@@ -379,7 +381,8 @@ register_constants(PyObject *d)
if parse_format == 'i':
print >> fd, ' this->%s = value;' % m[1]
- elif parse_format == 's':
+ elif parse_format in ('s', 'z'):
+ print >> fd, ' if (this->%s) g_free(this->%s);' % (m[1], m[1])
print >> fd, ' this->%s = g_strdup(value);' % m[1]
elif parse_format == 'O':
print >> fd, ' this->%s = (%s)g_object_ref(cvt_value->obj);' % (m[1], m[0])