diff options
author | Luca Bruno <lucabru@src.gnome.org> | 2013-10-09 20:57:08 +0200 |
---|---|---|
committer | Luca Bruno <lucabru@src.gnome.org> | 2013-10-17 21:35:53 +0200 |
commit | eaf1a1feafc621d3dad1106c0a4c389ceefd22b2 (patch) | |
tree | e0790cb78a316abaf49a70811de9473da39a284c /vala/valadatatype.vala | |
parent | 75359c3cab2e979d087ce0a19735bf86add33b42 (diff) | |
download | vala-eaf1a1feafc621d3dad1106c0a4c389ceefd22b2.tar.gz |
Fix crash due to not copying a type
Diffstat (limited to 'vala/valadatatype.vala')
-rw-r--r-- | vala/valadatatype.vala | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/vala/valadatatype.vala b/vala/valadatatype.vala index 085d321e0..352885bfd 100644 --- a/vala/valadatatype.vala +++ b/vala/valadatatype.vala @@ -442,19 +442,18 @@ public abstract class Vala.DataType : CodeNode { } public virtual DataType get_actual_type (DataType? derived_instance_type, MemberAccess? method_access, CodeNode node_reference) { + DataType result = this.copy (); + if (derived_instance_type == null && method_access == null) { - return this; + return result; } - DataType result = this; - if (result is GenericType) { result = SemanticAnalyzer.get_actual_type (derived_instance_type, method_access, (GenericType) result, node_reference); // don't try to resolve type arguments of returned actual type // they can never be resolved and are not related to the instance type } else if (result.type_argument_list != null) { // recursely get actual types for type arguments - result = result.copy (); for (int i = 0; i < result.type_argument_list.size; i++) { result.type_argument_list[i] = result.type_argument_list[i].get_actual_type (derived_instance_type, method_access, node_reference); } |