From b12ed60990658918f8fb27ca79f3054d7fb810ee Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Euzenat?= <Jerome.Euzenat@inria.fr>
Date: Thu, 12 Feb 2009 15:54:41 +0000
Subject: [PATCH] - improved and corrected bug in cut(.)

---
 src/fr/inrialpes/exmo/align/impl/BasicAlignment.java | 10 ++++------
 1 file changed, 4 insertions(+), 6 deletions(-)

diff --git a/src/fr/inrialpes/exmo/align/impl/BasicAlignment.java b/src/fr/inrialpes/exmo/align/impl/BasicAlignment.java
index 080abcb5..030d1851 100644
--- a/src/fr/inrialpes/exmo/align/impl/BasicAlignment.java
+++ b/src/fr/inrialpes/exmo/align/impl/BasicAlignment.java
@@ -437,18 +437,17 @@ public class BasicAlignment implements Alignment {
 	if ( method.equals("perc") ){
 	    i = (new Double(size*threshold)).intValue();
 	} else if ( method.equals("best") ){
-	    i = new Double(threshold*100).intValue();
+	    i = java.lang.Math.min( size, new Double(threshold*100).intValue() );
 	} else if ( method.equals("hardgap") || method.equals("propgap") ){
 	    double gap;
 	    double last = ((Cell)buffer.get(0)).getStrength();
 	    if ( method.equals("propgap") ) gap = last * threshold;
 	    else gap = threshold;
-	    for( i=1; i < size && !found ;) {
+	    for( i=1; i < size && !found ; i++) {
 		if ( last - ((Cell)buffer.get(i)).getStrength() > gap ) found = true;
 		else {
 		    last = ((Cell)buffer.get(i)).getStrength();
 		    if ( method.equals("propgap") ) gap = last * threshold;
-		    i++;
 		}
 	    }
 	} else {
@@ -457,16 +456,15 @@ public class BasicAlignment implements Alignment {
 	    else if ( method.equals("span") ) max = ((Cell)buffer.get(0)).getStrength() - threshold;
 	    else if ( method.equals("prop") ) max = ((Cell)buffer.get(0)).getStrength() * threshold;
 	    else throw new AlignmentException( "Not a cut specification : "+method );
-	    for( i=0; i < size && !found ;) {
+	    for( i=0; i < size && !found ; i++) {
 		if ( ((Cell)buffer.get(i)).getStrength() < max ) found = true;
-		else i++;
 	    }
 	}
 	// Introduce the result back in the structure
 	size = i;
 	hash1.clear();
 	hash2.clear();
-	for( i = 0; i < size; i++ ) {
+	for( i=0; i < size; i++ ) {
 	    addCell( (Cell)buffer.get(i) );
 	}
     };
-- 
GitLab