aboutsummaryrefslogtreecommitdiffstats
path: root/recipes
diff options
context:
space:
mode:
authorFrederik Sdun <frederik.sdun@googlemail.com>2009-10-07 09:53:03 +0000
committerKlaus Kurzmann <mok@fluxnetz.de>2009-10-09 11:45:46 +0200
commit2a02100840664139cfb3618ad3415f7f3dbd81f1 (patch)
treefde97b4b002326f070b36c5535bf0db55ca49088 /recipes
parent83d70642d238c3b4f0fdaf00606f4d6641e152e9 (diff)
downloadopenembedded-2a02100840664139cfb3618ad3415f7f3dbd81f1.tar.gz
Add more patches for vala 0.7.7
Signed-off-by: Frederik 'playya' Sdun <Frederik.Sdun@googlemail.com> Signed-off-by: Klaus Kurzmann <mok@fluxnetz.de>
Diffstat (limited to 'recipes')
-rw-r--r--recipes/vala/files/0001-Fix-generated-code-for-stack-allocated-arrays.patch31
-rw-r--r--recipes/vala/files/0001-Fix-memory-management-for-closures-used-as-signal-ha.patch64
-rw-r--r--recipes/vala/files/0001-GAsync-Fix-async-methods-with-delegate-parameters.patch81
-rw-r--r--recipes/vala/files/0001-GAsync-Fix-connecting-signal-handlers-in-async-meth.patch70
-rw-r--r--recipes/vala/vala-native_0.7.7.bb4
-rw-r--r--recipes/vala/vala_0.7.7.bb4
6 files changed, 254 insertions, 0 deletions
diff --git a/recipes/vala/files/0001-Fix-generated-code-for-stack-allocated-arrays.patch b/recipes/vala/files/0001-Fix-generated-code-for-stack-allocated-arrays.patch
new file mode 100644
index 0000000000..de3dec433b
--- /dev/null
+++ b/recipes/vala/files/0001-Fix-generated-code-for-stack-allocated-arrays.patch
@@ -0,0 +1,31 @@
+From 2dda5192f775543bbd49494934f4d5c54cd45af1 Mon Sep 17 00:00:00 2001
+From: =?utf-8?q?J=C3=BCrg=20Billeter?= <j@bitron.ch>
+Date: Fri, 2 Oct 2009 23:46:29 +0200
+Subject: [PATCH] Fix generated code for stack-allocated arrays
+
+Fixes bug 595751.
+---
+ vala/valasymbolresolver.vala | 7 ++++++-
+ 1 files changed, 5 insertions(+), 1 deletions(-)
+
+diff --git a/vala/valasymbolresolver.vala b/vala/valasymbolresolver.vala
+index 213bd53..09a9c19 100644
+--- a/vala/valasymbolresolver.vala
++++ b/vala/valasymbolresolver.vala
+@@ -350,7 +350,12 @@ public class Vala.SymbolResolver : CodeVisitor {
+ public override void visit_local_variable (LocalVariable local) {
+ local.accept_children (this);
+ if (local.variable_type is ReferenceType) {
+- local.variable_type.nullable = true;
++ var array_type = local.variable_type as ArrayType;
++ if (array_type != null && array_type.fixed_length) {
++ // local fixed length arrays are not nullable
++ } else {
++ local.variable_type.nullable = true;
++ }
+ }
+ }
+
+--
+1.6.0.4
+
diff --git a/recipes/vala/files/0001-Fix-memory-management-for-closures-used-as-signal-ha.patch b/recipes/vala/files/0001-Fix-memory-management-for-closures-used-as-signal-ha.patch
new file mode 100644
index 0000000000..9596b07830
--- /dev/null
+++ b/recipes/vala/files/0001-Fix-memory-management-for-closures-used-as-signal-ha.patch
@@ -0,0 +1,64 @@
+From 7e192cd797d8f950ee35082863e01d455192d9f2 Mon Sep 17 00:00:00 2001
+From: =?utf-8?q?J=C3=BCrg=20Billeter?= <j@bitron.ch>
+Date: Fri, 2 Oct 2009 21:50:28 +0200
+Subject: [PATCH] Fix memory management for closures used as signal handlers
+
+Fixes bug 597155.
+---
+ tests/Makefile.am | 1 +
+ tests/objects/bug597155.vala | 16 ++++++++++++++++
+ vala/valasignaltype.vala | 4 +++-
+ 3 files changed, 20 insertions(+), 1 deletions(-)
+
+diff --git a/tests/Makefile.am b/tests/Makefile.am
+index e510669..2696259 100644
+--- a/tests/Makefile.am
++++ b/tests/Makefile.am
+@@ -52,6 +52,7 @@ TESTS = \
+ objects/test-034.vala \
+ objects/bug593260.vala \
+ objects/bug596621.vala \
++ objects/bug597155.vala \
+ errors/errors.vala \
+ errors/bug579101.vala \
+ errors/bug596228.vala \
+diff --git a/tests/objects/bug597155.vala b/tests/objects/bug597155.vala
+new file mode 100644
+index 0000000..c6a6283
+--- /dev/null
++++ b/tests/objects/bug597155.vala
+@@ -0,0 +1,16 @@
++class Foo : Object {
++ public signal void bar ();
++}
++
++Foo do_foo () {
++ var foo = new Foo ();
++ foo.bar.connect (() => {
++ assert (foo is Foo);
++ });
++ return foo;
++}
++
++void main () {
++ var foo = do_foo ();
++ foo.bar ();
++}
+diff --git a/vala/valasignaltype.vala b/vala/valasignaltype.vala
+index 19430a8..b7e3b84 100644
+--- a/vala/valasignaltype.vala
++++ b/vala/valasignaltype.vala
+@@ -62,7 +62,9 @@ public class Vala.SignalType : DataType {
+
+ DelegateType get_handler_type () {
+ var sender_type = new ObjectType ((ObjectTypeSymbol) signal_symbol.parent_symbol);
+- return new DelegateType (signal_symbol.get_delegate (sender_type, this));
++ var result = new DelegateType (signal_symbol.get_delegate (sender_type, this));
++ result.value_owned = true;
++ return result;
+ }
+
+ Method get_connect_method () {
+--
+1.6.0.4
+
diff --git a/recipes/vala/files/0001-GAsync-Fix-async-methods-with-delegate-parameters.patch b/recipes/vala/files/0001-GAsync-Fix-async-methods-with-delegate-parameters.patch
new file mode 100644
index 0000000000..a06bf97261
--- /dev/null
+++ b/recipes/vala/files/0001-GAsync-Fix-async-methods-with-delegate-parameters.patch
@@ -0,0 +1,81 @@
+From 43c8f34ed184a730874f87be47f116d707407ff7 Mon Sep 17 00:00:00 2001
+From: =?utf-8?q?J=C3=BCrg=20Billeter?= <j@bitron.ch>
+Date: Mon, 5 Oct 2009 18:49:52 +0200
+Subject: [PATCH] GAsync: Fix async methods with delegate parameters
+
+Fixes bug 597294.
+---
+ codegen/valagasyncmodule.vala | 7 +++++++
+ tests/Makefile.am | 1 +
+ tests/asynchronous/bug597294.vala | 8 ++++++++
+ 3 files changed, 16 insertions(+), 0 deletions(-)
+
+diff --git a/codegen/valagasyncmodule.vala b/codegen/valagasyncmodule.vala
+index 4fade0d..6f17344 100644
+--- a/codegen/valagasyncmodule.vala
++++ b/codegen/valagasyncmodule.vala
+@@ -53,6 +53,7 @@ internal class Vala.GAsyncModule : GSignalModule {
+ }
+ } else if (param.parameter_type is DelegateType) {
+ data.add_field ("gpointer", get_delegate_target_cname (get_variable_cname (param.name)));
++ data.add_field ("GDestroyNotify", get_delegate_target_destroy_notify_cname (get_variable_cname (param.name)));
+ }
+ }
+
+@@ -65,6 +66,7 @@ internal class Vala.GAsyncModule : GSignalModule {
+ }
+ } else if (m.return_type is DelegateType) {
+ data.add_field ("gpointer", get_delegate_target_cname ("result"));
++ data.add_field ("GDestroyNotify", get_delegate_target_destroy_notify_cname ("result"));
+ }
+ }
+
+@@ -96,6 +98,7 @@ internal class Vala.GAsyncModule : GSignalModule {
+ if (requires_destroy (param_type)) {
+ var ma = new MemberAccess.simple (param.name);
+ ma.symbol_reference = param;
++ ma.value_type = param.parameter_type.copy ();
+ freeblock.add_statement (new CCodeExpressionStatement (get_unref_expression (new CCodeMemberAccess.pointer (new CCodeIdentifier ("data"), get_variable_cname (param.name)), param.parameter_type, ma)));
+ }
+ }
+@@ -206,7 +209,11 @@ internal class Vala.GAsyncModule : GSignalModule {
+ asyncblock.add_statement (new CCodeExpressionStatement (new CCodeAssignment (new CCodeMemberAccess.pointer (data_var, get_array_length_cname (get_variable_cname (param.name), dim)), new CCodeIdentifier (get_array_length_cname (get_variable_cname (param.name), dim)))));
+ }
+ } else if (param.parameter_type is DelegateType) {
++ var deleg_type = (DelegateType) param.parameter_type;
+ asyncblock.add_statement (new CCodeExpressionStatement (new CCodeAssignment (new CCodeMemberAccess.pointer (data_var, get_delegate_target_cname (get_variable_cname (param.name))), new CCodeIdentifier (get_delegate_target_cname (get_variable_cname (param.name))))));
++ if (deleg_type.value_owned) {
++ asyncblock.add_statement (new CCodeExpressionStatement (new CCodeAssignment (new CCodeMemberAccess.pointer (data_var, get_delegate_target_destroy_notify_cname (get_variable_cname (param.name))), new CCodeIdentifier (get_delegate_target_destroy_notify_cname (get_variable_cname (param.name))))));
++ }
+ }
+ }
+ }
+diff --git a/tests/Makefile.am b/tests/Makefile.am
+index 8f704db..e9be7e8 100644
+--- a/tests/Makefile.am
++++ b/tests/Makefile.am
+@@ -62,6 +62,7 @@ TESTS = \
+ asynchronous/bug595735.vala \
+ asynchronous/bug595755.vala \
+ asynchronous/bug596177.vala \
++ asynchronous/bug597294.vala \
+ dbus/basic-types.test \
+ dbus/arrays.test \
+ dbus/async.test \
+diff --git a/tests/asynchronous/bug597294.vala b/tests/asynchronous/bug597294.vala
+new file mode 100644
+index 0000000..92a04bf
+--- /dev/null
++++ b/tests/asynchronous/bug597294.vala
+@@ -0,0 +1,8 @@
++delegate void Foo ();
++
++async void do_foo (Foo f) {
++ f ();
++}
++
++void main () {
++}
+--
+1.6.0.4
+
diff --git a/recipes/vala/files/0001-GAsync-Fix-connecting-signal-handlers-in-async-meth.patch b/recipes/vala/files/0001-GAsync-Fix-connecting-signal-handlers-in-async-meth.patch
new file mode 100644
index 0000000000..6351d52789
--- /dev/null
+++ b/recipes/vala/files/0001-GAsync-Fix-connecting-signal-handlers-in-async-meth.patch
@@ -0,0 +1,70 @@
+From ca65d7ec727bea515030d0c9293979b2ac1cf188 Mon Sep 17 00:00:00 2001
+From: =?utf-8?q?J=C3=BCrg=20Billeter?= <j@bitron.ch>
+Date: Fri, 2 Oct 2009 22:11:11 +0200
+Subject: [PATCH] GAsync: Fix connecting signal handlers in async methods
+
+Fixes bug 595755.
+---
+ codegen/valagsignalmodule.vala | 6 +++---
+ tests/Makefile.am | 1 +
+ tests/asynchronous/bug595755.vala | 11 +++++++++++
+ 3 files changed, 15 insertions(+), 3 deletions(-)
+
+diff --git a/codegen/valagsignalmodule.vala b/codegen/valagsignalmodule.vala
+index 2387b12..8bfcd9f 100644
+--- a/codegen/valagsignalmodule.vala
++++ b/codegen/valagsignalmodule.vala
+@@ -594,7 +594,7 @@ internal class Vala.GSignalModule : GObjectModule {
+ if (ma.inner != null) {
+ ccall.add_argument ((CCodeExpression) get_ccodenode (ma.inner));
+ } else {
+- ccall.add_argument (new CCodeIdentifier ("self"));
++ ccall.add_argument (get_result_cexpression ("self"));
+ }
+
+ if (sig is DynamicSignal) {
+@@ -671,10 +671,10 @@ internal class Vala.GSignalModule : GObjectModule {
+ if (right_ma.inner != null) {
+ ccall.add_argument ((CCodeExpression) right_ma.inner.ccodenode);
+ } else {
+- ccall.add_argument (new CCodeIdentifier ("self"));
++ ccall.add_argument (get_result_cexpression ("self"));
+ }
+ } else if (handler is LambdaExpression) {
+- ccall.add_argument (new CCodeIdentifier ("self"));
++ ccall.add_argument (get_result_cexpression ("self"));
+ }
+ if (!disconnect && !(sig is DynamicSignal)
+ && in_gobject_instance (m)) {
+diff --git a/tests/Makefile.am b/tests/Makefile.am
+index 2696259..eb19c7f 100644
+--- a/tests/Makefile.am
++++ b/tests/Makefile.am
+@@ -57,6 +57,7 @@ TESTS = \
+ errors/bug579101.vala \
+ errors/bug596228.vala \
+ asynchronous/bug595735.vala \
++ asynchronous/bug595755.vala \
+ asynchronous/bug596177.vala \
+ dbus/basic-types.test \
+ dbus/arrays.test \
+diff --git a/tests/asynchronous/bug595755.vala b/tests/asynchronous/bug595755.vala
+new file mode 100644
+index 0000000..ac9bbd5
+--- /dev/null
++++ b/tests/asynchronous/bug595755.vala
+@@ -0,0 +1,11 @@
++class Foo : Object {
++ public signal void bar ();
++
++ public async void do_foo () {
++ bar.connect (() => {
++ });
++ }
++}
++
++void main () {
++}
+--
+1.6.0.4
+
diff --git a/recipes/vala/vala-native_0.7.7.bb b/recipes/vala/vala-native_0.7.7.bb
index e85d4e4bd4..e25d87f781 100644
--- a/recipes/vala/vala-native_0.7.7.bb
+++ b/recipes/vala/vala-native_0.7.7.bb
@@ -12,4 +12,8 @@ SRC_URI = "\
file://0010-D-Bus-Fix-marshalling-of-GLib.Value-parameters.patch;patch=1 \
file://0014-GError-Fix-error-propagation-in-creation-methods.patch;patch=1 \
file://0018-glib-2.0-Fix-g_regex_get_pattern-binding.patch;patch=1 \
+ file://0001-Fix-generated-code-for-stack-allocated-arrays.patch;patch=1 \
+ file://0001-Fix-memory-management-for-closures-used-as-signal-ha.patch;patch=1 \
+ file://0001-GAsync-Fix-async-methods-with-delegate-parameters.patch;patch=1 \
+ file://0001-GAsync-Fix-connecting-signal-handlers-in-async-meth.patch;patch=1 \
"
diff --git a/recipes/vala/vala_0.7.7.bb b/recipes/vala/vala_0.7.7.bb
index 6f9279daf4..d7167bf932 100644
--- a/recipes/vala/vala_0.7.7.bb
+++ b/recipes/vala/vala_0.7.7.bb
@@ -8,4 +8,8 @@ SRC_URI = "\
file://0010-D-Bus-Fix-marshalling-of-GLib.Value-parameters.patch;patch=1 \
file://0014-GError-Fix-error-propagation-in-creation-methods.patch;patch=1 \
file://0018-glib-2.0-Fix-g_regex_get_pattern-binding.patch;patch=1 \
+ file://0001-Fix-generated-code-for-stack-allocated-arrays.patch;patch=1 \
+ file://0001-Fix-memory-management-for-closures-used-as-signal-ha.patch;patch=1 \
+ file://0001-GAsync-Fix-async-methods-with-delegate-parameters.patch;patch=1 \
+ file://0001-GAsync-Fix-connecting-signal-handlers-in-async-meth.patch;patch=1 \
"