diff --git a/Geo/GModelIO_MSH2.cpp b/Geo/GModelIO_MSH2.cpp index ece2fd82cc6313fde1e653a03479548f435e7e74..63b7332ac18c041fc9a9e2f22d5106f385e0d3a8 100644 --- a/Geo/GModelIO_MSH2.cpp +++ b/Geo/GModelIO_MSH2.cpp @@ -707,7 +707,7 @@ int GModel::_readMSH2(const std::string &name) if(feof(fp)) break; - if(!strncmp(&str[1], "Periodic",8)) { + if(!strncmp(&str[1], "Periodic",8) && strlen(&str[1]) == 8) { readMSHPeriodicNodes(fp,this); break; } diff --git a/Parser/Gmsh.y b/Parser/Gmsh.y index 4bc2a3f48e93814c4215ce05e4d9f96e5f26d56a..4bad1489f2888aa68b6fc4af7072dac7bc9fe2ab 100644 --- a/Parser/Gmsh.y +++ b/Parser/Gmsh.y @@ -6610,9 +6610,11 @@ void addPeriodicFace(int iTarget, int iSource, else{ GFace *target = GModel::current()->getFaceByTag(abs(iTarget)); GFace *source = GModel::current()->getFaceByTag(abs(iSource)); - if (!target) Msg::Error("Could not find edge %d for periodic copy from %d", - iTarget,iSource); - target->setMeshMaster(source, affineTransform); + if (!target || !master) { + Msg::Error("Could not find edge slave %d or master %d for periodic copy", + iTarget,iSource); + } + else target->setMeshMaster(source, affineTransform); } } @@ -6626,7 +6628,7 @@ void addPeriodicFace(int iTarget, int iSource, for (; sIter != edgeCounterparts.end(); ++sIter) { Msg::Info("%d - %d", sIter->first, sIter->second); } - + if (target) { GEO_Internals::MasterFace& mf = GModel::current()->getGEOInternals()->periodicFaces[iTarget]; @@ -6637,10 +6639,11 @@ void addPeriodicFace(int iTarget, int iSource, else{ GFace *target = GModel::current()->getFaceByTag(abs(iTarget)); GFace *source = GModel::current()->getFaceByTag(abs(iSource)); - if (!target || !source) - Msg::Error("Could not find surface %d or %d for periodic copy", + if (!target || !source) { + Msg::Error("Could not find surface slave %d or master %d for periodic copy", iTarget,iSource); - target->setMeshMaster(source, edgeCounterparts); + } + else target->setMeshMaster(source, edgeCounterparts); } }