On 06/29/2011 09:17 AM, Andreas Tille wrote: > sorry for the late reply to this bug. I can reproduce the problem on my > side but I'm not finally sure that this is really a problem of clonalframe > or whether it is a bad coincidence with libgsl0-dev. The line in question > where the problem occures is: > > src/move_hidden.cpp:423:59: error: taking address of temporary > [-fpermissive] > > > 423: Util::normalize(&(gsl_matrix_row(e,i+1).vector)); > > So I suspect that there are temporary variables used where they should > not but these are not declared in Move_hidden::makee(). My c++ > knowledge ist too limited to track down the problem in a reasonable time > frame and thus I CC debian-mentors and upstream (Xavier please find the > full log of this bug below or at http://bugs.debian.org/625120).
The attached patch should fix this issue. The problem here is that the return value of gsl_matrix_row is a non-lvalue and thus one cannot take its address. Kind regards, -- Sebastian Ramacher
--- clonalframe-1.2.orig/src/move_hidden.cpp
+++ clonalframe-1.2/src/move_hidden.cpp
@@ -166,7 +166,8 @@ namespace wb
sum+=gsl_matrix_get(f,j,i)*q[j][state][site-siteprev-1];
gsl_matrix_set(f,state,i+1,sum*gsl_matrix_get(e,state,msgs[site]));
}
- Util::normalize(&(gsl_matrix_column(f,i+1).vector));
+ gsl_vector_view view = gsl_matrix_column(f,i+1);
+ Util::normalize(&view.vector);
}
return f;
}
@@ -420,7 +421,8 @@ namespace wb
gsl_matrix_set(e,i+1,2,(1.0-m2)*m3+(1.0-m3)*m2);
}
- Util::normalize(&(gsl_matrix_row(e,i+1).vector));
+ gsl_vector_view view = gsl_matrix_row(e,i+1);
+ Util::normalize(&view.vector);
}
}
signature.asc
Description: OpenPGP digital signature

