Codebase list telepathy-glib / e5a42fe
New upstream stable release Simon McVittie 10 years ago
3 changed file(s) with 7 addition(s) and 75 deletion(s). Raw diff Collapse all Expand all
0 telepathy-glib (0.24.0-1) unstable; urgency=low
1
2 * New upstream stable release
3 - drop patch, applied upstream
4
5 -- Simon McVittie <smcv@debian.org> Wed, 26 Mar 2014 16:02:04 +0000
6
07 telepathy-glib (0.23.3-1) unstable; urgency=low
18
29 * New upstream release (release candidate for 0.24.0)
+0
-74
debian/patches/0001-Don-t-leak-method-call-results-regression-in-0.23.1.patch less more
0 From: Simon McVittie <simon.mcvittie@collabora.co.uk>
1 Date: Tue, 18 Mar 2014 13:51:16 +0000
2 Subject: Don't leak method call results (regression in 0.23.1)
3
4 Commit 7ffbde3f used common code for two blocks that were not actually
5 the same. dbus-glib method calls give the caller a new reference
6 to the results, whereas dbus-glib signals do not. As a result,
7 the method-call case needs to either free the results, or get them
8 freed by giving ownership to the GValueArray. I chose to give
9 ownership.
10
11 Reviewed-by: Guillaume Desmottes
12 Origin: upstream, 0.23.4, commit:164cf33347e03e3d04f013ec7f710d991825cd66
13 ---
14 tools/glib-client-gen.py | 6 +++---
15 tools/libglibcodegen.py | 21 +++++++++++++++++++++
16 2 files changed, 24 insertions(+), 3 deletions(-)
17
18 diff --git a/tools/glib-client-gen.py b/tools/glib-client-gen.py
19 index a0fecf0..b7edbc0 100644
20 --- a/tools/glib-client-gen.py
21 +++ b/tools/glib-client-gen.py
22 @@ -29,8 +29,8 @@ from getopt import gnu_getopt
23
24 from libtpcodegen import file_set_contents, key_by_name, u
25 from libglibcodegen import (Signature, type_to_gtype,
26 - get_docstring, xml_escape, get_deprecated, copy_into_gvalue)
27 -
28 + get_docstring, xml_escape, get_deprecated, copy_into_gvalue,
29 + move_into_gvalue)
30
31 NS_TP = "http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0"
32
33 @@ -545,7 +545,7 @@ class Generator(object):
34 self.b(' g_value_unset (args->values + %d);' % i)
35 self.b(' g_value_init (args->values + %d, %s);' % (i, gtype))
36
37 - self.b(' ' + copy_into_gvalue('args->values + %d' % i,
38 + self.b(' ' + move_into_gvalue('args->values + %d' % i,
39 gtype, marshaller, name))
40
41 self.b(' tp_proxy_pending_call_v0_take_results (user_data, '
42 diff --git a/tools/libglibcodegen.py b/tools/libglibcodegen.py
43 index 0b703a5..5c76f07 100644
44 --- a/tools/libglibcodegen.py
45 +++ b/tools/libglibcodegen.py
46 @@ -171,6 +171,27 @@ def type_to_gtype(s):
47 # we just don't know ..
48 raise Exception("don't know the GType for " + s)
49
50 +def move_into_gvalue(gvaluep, gtype, marshaller, name):
51 + if gtype == 'G_TYPE_STRING':
52 + return 'g_value_take_string (%s, %s);' % (gvaluep, name)
53 + elif marshaller == 'BOXED':
54 + return 'g_value_take_boxed (%s, %s);' % (gvaluep, name)
55 + elif gtype == 'G_TYPE_UCHAR':
56 + return 'g_value_set_uchar (%s, %s);' % (gvaluep, name)
57 + elif gtype == 'G_TYPE_BOOLEAN':
58 + return 'g_value_set_boolean (%s, %s);' % (gvaluep, name)
59 + elif gtype == 'G_TYPE_INT':
60 + return 'g_value_set_int (%s, %s);' % (gvaluep, name)
61 + elif gtype == 'G_TYPE_UINT':
62 + return 'g_value_set_uint (%s, %s);' % (gvaluep, name)
63 + elif gtype == 'G_TYPE_INT64':
64 + return 'g_value_set_int (%s, %s);' % (gvaluep, name)
65 + elif gtype == 'G_TYPE_UINT64':
66 + return 'g_value_set_uint64 (%s, %s);' % (gvaluep, name)
67 + elif gtype == 'G_TYPE_DOUBLE':
68 + return 'g_value_set_double (%s, %s);' % (gvaluep, name)
69 + else:
70 + raise AssertionError("Don't know how to put %s in a GValue" % gtype)
71
72 def copy_into_gvalue(gvaluep, gtype, marshaller, name):
73 if gtype == 'G_TYPE_STRING':
0 0001-Don-t-leak-method-call-results-regression-in-0.23.1.patch