]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
Fix initialization of delegate fields
authorAbderrahim Kitouni <a.kitouni@gmail.com>
Sun, 29 Mar 2009 19:54:50 +0000 (21:54 +0200)
committerJürg Billeter <j@bitron.ch>
Sun, 29 Mar 2009 19:54:50 +0000 (21:54 +0200)
When initializing the delegate field at creation, its target was
not set. Fixes part of bug 571171.

gobject/valaccodebasemodule.vala

index 6b373bb35ac1aa77252b4c4b399609319a666747..ee3983e1f1ddc8c085c90bc85ee47cc7ae2e3afb 100644 (file)
@@ -2989,6 +2989,14 @@ internal class Vala.CCodeBaseModule : CCodeModule {
                                                        var rhs_array_len = head.get_array_length_cexpression (init.initializer, dim);
                                                        ccomma.append_expression (new CCodeAssignment (lhs, rhs_array_len));
                                                }
+                                       } else if (f.field_type is DelegateType) {
+                                               if (expr.type_reference.data_type is Struct) {
+                                                       lhs = new CCodeMemberAccess (typed_inst, get_delegate_target_cname (f.get_cname ()));
+                                               } else {
+                                                       lhs = new CCodeMemberAccess.pointer (typed_inst, get_delegate_target_cname (f.get_cname ()));
+                                               }
+                                               var rhs_delegate_target = get_delegate_target_cexpression (init.initializer);
+                                               ccomma.append_expression (new CCodeAssignment (lhs, rhs_delegate_target));
                                        }
                                } else if (init.symbol_reference is Property) {
                                        var inst_ma = new MemberAccess.simple ("new");