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);
   }
 }