diff --git a/Geo/GModelIO_Mesh.cpp b/Geo/GModelIO_Mesh.cpp
index af27314835f27437dda6cde9b4db281d37b167a2..046a6e3bb8eebece2f91f91939005f5aae38a29d 100644
--- a/Geo/GModelIO_Mesh.cpp
+++ b/Geo/GModelIO_Mesh.cpp
@@ -169,7 +169,7 @@ int GModel::readMSH(const std::string &name)
       vertexMap.clear();
       int minVertex = numVertices + 1, maxVertex = -1;
       for(int i = 0; i < numVertices; i++) {
-        int num, iClasDim, iClasTag;	
+        int num;	
         double xyz[3], uv[2];
 	MVertex *newVertex = 0;
 	if (!parametric){
@@ -186,6 +186,7 @@ int GModel::readMSH(const std::string &name)
 	  newVertex = new MVertex(xyz[0], xyz[1], xyz[2], 0, num);
 	}
 	else{
+          int iClasDim, iClasTag;
 	  if(!binary){	    
 	    if (fscanf(fp, "%d %lf %lf %lf %d %d", &num, &xyz[0], &xyz[1], &xyz[2],
                        &iClasDim, &iClasTag) != 6)
@@ -330,7 +331,7 @@ int GModel::readMSH(const std::string &name)
             }
             createElementMSH(this, num, type, physical, elementary, partition, 
                              vertices, elements, physicals);
-            if(numElements > 100000) 
+            if(numElements > 100000)
               Msg::ProgressMeter(numElementsPartial + i + 1, numElements, 
                                  "Reading elements");
           }
diff --git a/Geo/MVertex.cpp b/Geo/MVertex.cpp
index 57eb825f3d62c14d60553e090f02feedf326ab11..02ece717c664cdcc340d6175698758e7244a15f9 100644
--- a/Geo/MVertex.cpp
+++ b/Geo/MVertex.cpp
@@ -357,14 +357,15 @@ bool reparamMeshVertexOnEdge(const MVertex *v, const GEdge *ge, double &param)
 {
   param = 1.e6;
   Range<double> bounds = ge->parBounds(0);
+  bool ok = true;
   if(ge->getBeginVertex() && ge->getBeginVertex()->mesh_vertices[0] == v)
     param = bounds.low();
   else if(ge->getEndVertex() && ge->getEndVertex()->mesh_vertices[0] == v)
     param = bounds.high();
   else
-    v->getParameter(0, param);
+    ok = v->getParameter(0, param);
 
-  if(param == 1.e6)
+  if(!ok || param == 1.e6)
     param = ge->parFromPoint(SPoint3(v->x(), v->y(), v->z()));
   
   if(param < 1.e6) return true;
diff --git a/doc/TODO.txt b/doc/TODO.txt
index 4da9d902917d7d70bece79956fc2b59aa809e0fa..d46d1dbe9ff0717c214d967df3ef9b49a662ddee 100644
--- a/doc/TODO.txt
+++ b/doc/TODO.txt
@@ -1,4 +1,13 @@
-$Id: TODO.txt,v 1.16 2009-01-18 18:51:48 geuzaine Exp $
+$Id: TODO.txt,v 1.17 2009-02-05 06:47:19 geuzaine Exp $
+
+********************************************************************
+
+LMGC & co: allow arbitrary glyphs to represent data (like our 3D
+arrows). Glyph can be loaded as a mesh or a geometry; create vertex
+array or display list for each; select glyph in Point/Vector/Tensor
+display dialog. define number of values to transform glyph (quaternion
++ scale{x,y,z}?). Definition: Glyph = drawable rigid object with a
+single associated scalar/vector or tensor value.
 
 ********************************************************************