From 70501397579ac3376b3bda9bdda56b910c142a9c Mon Sep 17 00:00:00 2001 From: Rohan Budhiraja <budhiraja@laas.fr> Date: Fri, 8 Apr 2016 20:15:09 +0200 Subject: [PATCH] [wip/dynamic-graph3][PATCH] fix bug in matrix istream input operator --- dynamic-graph3/Makefile | 2 +- dynamic-graph3/distinfo | 1 + dynamic-graph3/patches/patch-ac | 73 +++++++++++++++++++++++++++++++++ 3 files changed, 75 insertions(+), 1 deletion(-) create mode 100644 dynamic-graph3/patches/patch-ac diff --git a/dynamic-graph3/Makefile b/dynamic-graph3/Makefile index 8bdb8b6e..97bd4f4a 100644 --- a/dynamic-graph3/Makefile +++ b/dynamic-graph3/Makefile @@ -4,7 +4,7 @@ PKG_NAME= dynamic-graph VERSION= 3.0.0 DISTNAME= ${PKG_NAME}-${VERSION} -PKGREVISION= 1 +PKGREVISION= 2 CATEGORIES= wip MASTER_SITES= ${MASTER_SITE_OPENROBOTS:=dynamic-graph/} diff --git a/dynamic-graph3/distinfo b/dynamic-graph3/distinfo index d87a5a01..8ed9b9a0 100644 --- a/dynamic-graph3/distinfo +++ b/dynamic-graph3/distinfo @@ -3,3 +3,4 @@ RMD160 (dynamic-graph-3.0.0.tar.gz) = e2f50ba8e06003d264fd9e61afef9248c7df4dea Size (dynamic-graph-3.0.0.tar.gz) = 429940 bytes SHA1 (patch-aa) = d8d3aa22eea6c004d8bce7fbbe3c54c376463303 SHA1 (patch-ab) = f162e6527d43a57adb10700242997838c0446cc9 +SHA1 (patch-ac) = 302875035b9e3ed3b82593bc4903c46b831b4bb8 diff --git a/dynamic-graph3/patches/patch-ac b/dynamic-graph3/patches/patch-ac new file mode 100644 index 00000000..5591b2e2 --- /dev/null +++ b/dynamic-graph3/patches/patch-ac @@ -0,0 +1,73 @@ +[c++] fix bug in matrix istream input operator + +diff --git include/dynamic-graph/eigen-io.h include/dynamic-graph/eigen-io.h +index 89d8f33..6352cb5 100644 +--- include/dynamic-graph/eigen-io.h ++++ include/dynamic-graph/eigen-io.h +@@ -39,6 +39,7 @@ using dynamicgraph::ExceptionSignal; + */ + namespace Eigen { + typedef EIGEN_DEFAULT_DENSE_INDEX_TYPE eigen_index; ++ + inline std::istringstream& operator >> (std::istringstream &iss, + dynamicgraph::Vector &inst) { + unsigned int _size; +@@ -88,7 +89,8 @@ namespace Eigen { + unsigned int _rowsize; + double _dbl_val; + char _ch; +- boost::format fmt ("Failed to enter %s as vector. Reenter as [N](val1,val2,val3,...,valN)"); ++ boost::format fmt ("Failed to enter %s as matrix. Reenter as ((val11,val12,val13,...,val1N),...,(valM1,valM2,...,valMN))"); ++ MatrixXd _tmp_matrix; + fmt %iss.str(); + if(iss>> _ch && _ch != '['){ + throw ExceptionSignal(ExceptionSignal::GENERIC, fmt.str()); +@@ -101,7 +103,7 @@ namespace Eigen { + if (iss.fail()) + throw ExceptionSignal(ExceptionSignal::GENERIC,fmt.str()); + else { +- inst.resize(_rowsize,_colsize); ++ _tmp_matrix.resize(_rowsize,_colsize); + if(iss >> _ch && _ch != ']') + throw ExceptionSignal(ExceptionSignal::GENERIC, fmt.str()); + else { +@@ -115,7 +117,7 @@ namespace Eigen { + iss >> _dbl_val; + if (iss.peek() == ',' || iss.peek() == ' ') + iss.ignore(); +- inst(j,i) = _dbl_val; ++ _tmp_matrix(j,i) = _dbl_val; + } + if(iss >> _ch && _ch != ')') + throw ExceptionSignal(ExceptionSignal::GENERIC, fmt.str()); +@@ -128,13 +130,14 @@ namespace Eigen { + } + } + } ++ inst = _tmp_matrix; + return iss; + } + + + inline std::istringstream& operator >> (std::istringstream &iss, + Transform<double,3,Affine> &inst) { +- Matrix4d M; iss >> M; inst = M; return iss; } ++ MatrixXd M; iss >> M; inst.matrix() = M; return iss; } + + + +@@ -157,12 +160,12 @@ namespace Eigen { + + inline std::ostream& operator << (std::ostream &os, + AngleAxisd quat) { +- Vector4d v; v(0) = quat.angle(); v.tail<3>() = quat.axis(); ++ VectorXd v(4); v(0) = quat.angle(); v.tail<3>() = quat.axis(); + os << v; return os; } + + inline std::istringstream& operator >> (std::istringstream &iss, + AngleAxisd &inst) { +- Vector4d v; iss >>v; ++ VectorXd v(4); iss >>v; + inst.angle() = v(0); inst.axis() = v.tail<3>(); + return iss; } + -- GitLab