[vala] Fix crash with unsupported use of multi-dimensional array length
- From: Jürg Billeter <juergbi src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [vala] Fix crash with unsupported use of multi-dimensional array length
- Date: Sat, 19 Dec 2009 11:34:35 +0000 (UTC)
commit 609ee9d5a6664d8d8d690b4328b420aa54cc1e48
Author: Jürg Billeter <j bitron ch>
Date: Sat Dec 19 12:32:56 2009 +0100
Fix crash with unsupported use of multi-dimensional array length
Fixes bug 604589.
codegen/valaccodearraymodule.vala | 2 ++
codegen/valaccodememberaccessmodule.vala | 3 +++
2 files changed, 5 insertions(+), 0 deletions(-)
---
diff --git a/codegen/valaccodearraymodule.vala b/codegen/valaccodearraymodule.vala
index 45928c1..ec7dd83 100644
--- a/codegen/valaccodearraymodule.vala
+++ b/codegen/valaccodearraymodule.vala
@@ -411,6 +411,8 @@ internal class Vala.CCodeArrayModule : CCodeMethodCallModule {
if (lit != null && memberaccess != null) {
int dim = lit.value.to_int ();
expr.ccodenode = head.get_array_length_cexpression (memberaccess.inner, dim + 1);
+ } else {
+ Report.error (expr.source_reference, "only integer literals supported as index");
}
} else if (container_type == string_type.data_type) {
// should be moved to a different module
diff --git a/codegen/valaccodememberaccessmodule.vala b/codegen/valaccodememberaccessmodule.vala
index c6d9e2f..9e242d0 100644
--- a/codegen/valaccodememberaccessmodule.vala
+++ b/codegen/valaccodememberaccessmodule.vala
@@ -102,6 +102,9 @@ internal class Vala.CCodeMemberAccessModule : CCodeControlFlowModule {
expr.ccodenode = new CCodeIdentifier (m.get_cname ());
}
} else if (expr.symbol_reference is ArrayLengthField) {
+ if (expr.value_type is ArrayType && !(expr.parent_node is ElementAccess)) {
+ Report.error (expr.source_reference, "unsupported use of length field of multi-dimensional array");
+ }
expr.ccodenode = head.get_array_length_cexpression (expr.inner, 1);
} else if (expr.symbol_reference is Field) {
var f = (Field) expr.symbol_reference;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]