Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Damn, this code gets annoying. Each time I'm sure it's finally clean, I find 2 bugs...
authormquinson <mquinson@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Fri, 8 Jun 2007 06:33:31 +0000 (06:33 +0000)
committermquinson <mquinson@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Fri, 8 Jun 2007 06:33:31 +0000 (06:33 +0000)
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@3582 48e7efb5-ca39-0410-a469-dd3cf9ba447f

src/xbt/xbt_str.c

index 7ff0827..2ca23ab 100644 (file)
@@ -469,8 +469,9 @@ static xbt_matrix_t diff_build_LCS(xbt_dynar_t da, xbt_dynar_t db) {
                 C[i,j] := max(C[i,j-1], C[i-1,j])
     return C[m,n]
          */
                 C[i,j] := max(C[i,j-1], C[i-1,j])
     return C[m,n]
          */
-  for (i=0; i<xbt_dynar_length(da); i++) 
-    *((int*) xbt_matrix_get_ptr(C,i,0) ) = 0;
+  if (xbt_dynar_length(db) != 0)
+    for (i=0; i<xbt_dynar_length(da); i++) 
+      *((int*) xbt_matrix_get_ptr(C,i,0) ) = 0;
 
   if (xbt_dynar_length(da) != 0)
     for (j=0; j<xbt_dynar_length(db); j++) 
 
   if (xbt_dynar_length(da) != 0)
     for (j=0; j<xbt_dynar_length(db); j++) 
@@ -513,7 +514,7 @@ static void diff_build_diff(xbt_dynar_t res,
     topush = bprintf("  %s",xbt_dynar_get_as(da,i,char*));
     xbt_dynar_push(res, &topush);
   } else if (j>=0 && 
     topush = bprintf("  %s",xbt_dynar_get_as(da,i,char*));
     xbt_dynar_push(res, &topush);
   } else if (j>=0 && 
-            (i<=0 || xbt_matrix_get_as(C,i,j-1,int) >= xbt_matrix_get_as(C,i-1,j,int))) {
+            (i<=0 ||j==0|| xbt_matrix_get_as(C,i,j-1,int) >= xbt_matrix_get_as(C,i-1,j,int))) {
     diff_build_diff(res,C,da,db,i,j-1);
     topush = bprintf("+ %s",xbt_dynar_get_as(db,j,char*));
     xbt_dynar_push(res,&topush);
     diff_build_diff(res,C,da,db,i,j-1);
     topush = bprintf("+ %s",xbt_dynar_get_as(db,j,char*));
     xbt_dynar_push(res,&topush);