diff options
author | Frederik Sdun <frederik.sdun@googlemail.com> | 2009-10-07 09:53:03 +0000 |
---|---|---|
committer | Klaus Kurzmann <mok@fluxnetz.de> | 2009-10-09 11:45:46 +0200 |
commit | 2a02100840664139cfb3618ad3415f7f3dbd81f1 (patch) | |
tree | fde97b4b002326f070b36c5535bf0db55ca49088 /recipes | |
parent | 83d70642d238c3b4f0fdaf00606f4d6641e152e9 (diff) | |
download | openembedded-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')
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 \ " |