X-Git-Url: http://plrg.eecs.uci.edu/git/?p=repair.git;a=blobdiff_plain;f=Repair%2FRepairCompiler%2FMCC%2FIR%2FDotExpr.java;h=6998d3a3f001d8edb46ff6c5196380631c77ef97;hp=4f550a4cce8231f1c18b72f3229785be1f6ed6f9;hb=e8e7caf9f4a4e0c49fdfe97fc529703ebd8a4d8c;hpb=ffaf9068b5b6b06866bee46a83abb9e3c00b1b85 diff --git a/Repair/RepairCompiler/MCC/IR/DotExpr.java b/Repair/RepairCompiler/MCC/IR/DotExpr.java index 4f550a4..6998d3a 100755 --- a/Repair/RepairCompiler/MCC/IR/DotExpr.java +++ b/Repair/RepairCompiler/MCC/IR/DotExpr.java @@ -57,12 +57,23 @@ public class DotExpr extends Expr { public boolean isSafe() { if (!left.isSafe()) return false; + FieldDescriptor tmpfd=fd; - if (tmpfd instanceof ArrayDescriptor) - return false; // Arrays could be out of bounds + if (tmpfd.getPtr()) // Pointers cound be invalid return false; - return true; + + if (tmpfd instanceof ArrayDescriptor) { + Expr arrayindex=((ArrayDescriptor)tmpfd).getIndexBound(); + if (index instanceof IntegerLiteralExpr&&arrayindex instanceof IntegerLiteralExpr) { + int indexvalue=((IntegerLiteralExpr)index).getValue(); + int arrayindexvalue=((IntegerLiteralExpr)arrayindex).getValue(); + if (indexvalue>=0&&indexvalue