[vala] codegen: Fix crash when accessing arrays of unknown length



commit 4a37e081ec33291758210b0d22ca54c603aa370b
Author: Jürg Billeter <j bitron ch>
Date:   Thu Nov 11 14:14:37 2010 +0100

    codegen: Fix crash when accessing arrays of unknown length
    
    Fixes bug 634556.

 codegen/valaccodememberaccessmodule.vala |   12 ++++++++++++
 1 files changed, 12 insertions(+), 0 deletions(-)
---
diff --git a/codegen/valaccodememberaccessmodule.vala b/codegen/valaccodememberaccessmodule.vala
index 5bfc603..a544cba 100644
--- a/codegen/valaccodememberaccessmodule.vala
+++ b/codegen/valaccodememberaccessmodule.vala
@@ -207,6 +207,10 @@ public abstract class Vala.CCodeMemberAccessModule : CCodeControlFlowModule {
 								set_array_size_cvalue (expr.target_value, new CCodeMemberAccess (inst, size_cname));
 							}
 						}
+					} else {
+						for (int dim = 1; dim <= array_type.rank; dim++) {
+							append_array_size (expr, new CCodeConstant ("-1"));
+						}
 					}
 				} else if (delegate_type != null && delegate_type.delegate_symbol.has_target) {
 					string target_cname = get_delegate_target_cname (field.get_cname ());
@@ -282,6 +286,10 @@ public abstract class Vala.CCodeMemberAccessModule : CCodeControlFlowModule {
 						if (array_type.rank == 1 && field.is_internal_symbol ()) {
 							set_array_size_cvalue (expr.target_value, new CCodeIdentifier (get_array_size_cname (field.get_cname ())));
 						}
+					} else {
+						for (int dim = 1; dim <= array_type.rank; dim++) {
+							append_array_size (expr, new CCodeConstant ("-1"));
+						}
 					}
 				} else if (delegate_type != null && delegate_type.delegate_symbol.has_target) {
 					set_delegate_target_destroy_notify (expr, new CCodeConstant ("NULL"));
@@ -596,6 +604,10 @@ public abstract class Vala.CCodeMemberAccessModule : CCodeControlFlowModule {
 							}
 							append_array_size (expr, length_expr);
 						}
+					} else {
+						for (int dim = 1; dim <= array_type.rank; dim++) {
+							append_array_size (expr, new CCodeConstant ("-1"));
+						}
 					}
 				}
 			}



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]