vala r945 - in trunk: . vala
- From: juergbi svn gnome org
- To: svn-commits-list gnome org
- Subject: vala r945 - in trunk: . vala
- Date: Fri, 1 Feb 2008 17:52:33 +0000 (GMT)
Author: juergbi
Date: Fri Feb 1 17:52:32 2008
New Revision: 945
URL: http://svn.gnome.org/viewvc/vala?rev=945&view=rev
Log:
2008-02-01 Juerg Billeter <j bitron ch>
* vala/valacatchclause.vala, vala/valacfgbuilder.vala,
vala/valasemanticanalyzer.vala: fix crash when using general
catch clause, fixes bug 513680
Modified:
trunk/ChangeLog
trunk/vala/valacatchclause.vala
trunk/vala/valacfgbuilder.vala
trunk/vala/valasemanticanalyzer.vala
Modified: trunk/vala/valacatchclause.vala
==============================================================================
--- trunk/vala/valacatchclause.vala (original)
+++ trunk/vala/valacatchclause.vala Fri Feb 1 17:52:32 2008
@@ -1,6 +1,6 @@
/* valacatchclause.vala
*
- * Copyright (C) 2007 JÃrg Billeter
+ * Copyright (C) 2007-2008 JÃrg Billeter
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -29,11 +29,13 @@
/**
* Specifies the error type.
*/
- public DataType type_reference {
+ public DataType? type_reference {
get { return _data_type; }
set {
_data_type = value;
- _data_type.parent_node = this;
+ if (_data_type != null) {
+ _data_type.parent_node = this;
+ }
}
}
@@ -63,7 +65,7 @@
* @param source_reference reference to source code
* @return newly created catch clause
*/
- public CatchClause (construct DataType type_reference, construct string variable_name, construct Block body, construct SourceReference source_reference = null) {
+ public CatchClause (construct DataType? type_reference, construct string variable_name, construct Block body, construct SourceReference source_reference = null) {
}
public override void accept (CodeVisitor! visitor) {
@@ -71,7 +73,10 @@
}
public override void accept_children (CodeVisitor! visitor) {
- type_reference.accept (visitor);
+ if (type_reference != null) {
+ type_reference.accept (visitor);
+ }
+
body.accept (visitor);
}
Modified: trunk/vala/valacfgbuilder.vala
==============================================================================
--- trunk/vala/valacfgbuilder.vala (original)
+++ trunk/vala/valacfgbuilder.vala Fri Feb 1 17:52:32 2008
@@ -585,7 +585,11 @@
var catch_clauses = stmt.get_catch_clauses ();
for (int i = catch_clauses.size - 1; i >= 0; i--) {
var catch_clause = catch_clauses[i];
- jump_stack.add (new JumpTarget.error_target (new BasicBlock (), catch_clause, catch_clause.type_reference.data_type as Enum, null));
+ if (catch_clause.type_reference != null) {
+ jump_stack.add (new JumpTarget.error_target (new BasicBlock (), catch_clause, catch_clause.type_reference.data_type as Enum, null));
+ } else {
+ jump_stack.add (new JumpTarget.error_target (new BasicBlock (), catch_clause, null, null));
+ }
}
stmt.body.accept (this);
Modified: trunk/vala/valasemanticanalyzer.vala
==============================================================================
--- trunk/vala/valasemanticanalyzer.vala (original)
+++ trunk/vala/valasemanticanalyzer.vala Fri Feb 1 17:52:32 2008
@@ -1069,12 +1069,14 @@
}
public override void visit_catch_clause (CatchClause! clause) {
- current_source_file.add_type_dependency (clause.type_reference, SourceFileDependencyType.SOURCE);
+ if (clause.type_reference != null) {
+ current_source_file.add_type_dependency (clause.type_reference, SourceFileDependencyType.SOURCE);
- clause.variable_declarator = new VariableDeclarator (clause.variable_name);
- clause.variable_declarator.type_reference = new ClassType (gerror_type);
+ clause.variable_declarator = new VariableDeclarator (clause.variable_name);
+ clause.variable_declarator.type_reference = new ClassType (gerror_type);
- clause.body.scope.add (clause.variable_name, clause.variable_declarator);
+ clause.body.scope.add (clause.variable_name, clause.variable_declarator);
+ }
clause.accept_children (this);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]