summaryrefslogtreecommitdiff
path: root/vala/valadatatype.vala
diff options
context:
space:
mode:
authorLuca Bruno <lucabru@src.gnome.org>2013-10-09 20:57:08 +0200
committerLuca Bruno <lucabru@src.gnome.org>2013-10-17 21:35:53 +0200
commiteaf1a1feafc621d3dad1106c0a4c389ceefd22b2 (patch)
treee0790cb78a316abaf49a70811de9473da39a284c /vala/valadatatype.vala
parent75359c3cab2e979d087ce0a19735bf86add33b42 (diff)
downloadvala-eaf1a1feafc621d3dad1106c0a4c389ceefd22b2.tar.gz
Fix crash due to not copying a type
Diffstat (limited to 'vala/valadatatype.vala')
-rw-r--r--vala/valadatatype.vala7
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);
}