diff --git a/Doc/changelog.docu b/Doc/changelog.docu index e61521f9..48b0730b 100644 --- a/Doc/changelog.docu +++ b/Doc/changelog.docu @@ -22,6 +22,7 @@
  • OBJ Loader: range check for vertex colors and normals in OBJ loader
  • OBJ Loader: fixed handling of negative indices in OBJ loader
  • OM Writer: Fixed OMWriter when no faces are available (Thanks to Jamie Kydd for the patch)
  • +
  • OM Writer: Added Mark to the format header to identify end of stream correctly (Thanks to Jamie Kydd for the patch)
  • Unittests diff --git a/src/OpenMesh/Core/IO/OMFormat.hh b/src/OpenMesh/Core/IO/OMFormat.hh index dd098929..13228e84 100644 --- a/src/OpenMesh/Core/IO/OMFormat.hh +++ b/src/OpenMesh/Core/IO/OMFormat.hh @@ -179,7 +179,8 @@ namespace OMFormat { Entity_Mesh = 0x01, Entity_Face = 0x02, Entity_Edge = 0x04, - Entity_Halfedge = 0x06 + Entity_Halfedge = 0x06, + Entity_Sentinel = 0x07 }; enum Dim { diff --git a/src/OpenMesh/Core/IO/reader/OMReader.cc b/src/OpenMesh/Core/IO/reader/OMReader.cc index 031d85e8..b66684eb 100644 --- a/src/OpenMesh/Core/IO/reader/OMReader.cc +++ b/src/OpenMesh/Core/IO/reader/OMReader.cc @@ -211,6 +211,8 @@ bool _OMReader_::read_binary(std::istream& _is, BaseImporter& _bi, Options& _opt if (!read_binary_mesh_chunk(_is, _bi, _opt, swap)) return false; break; + case OMFormat::Chunk::Entity_Sentinel: + return true; default: return false; } diff --git a/src/OpenMesh/Core/IO/writer/OMWriter.cc b/src/OpenMesh/Core/IO/writer/OMWriter.cc index 9d234ccd..964a5ebc 100644 --- a/src/OpenMesh/Core/IO/writer/OMWriter.cc +++ b/src/OpenMesh/Core/IO/writer/OMWriter.cc @@ -430,6 +430,11 @@ bool _OMWriter_::write_binary(std::ostream& _os, BaseExporter& _be, OMFormat::Chunk::Entity_Mesh, swap ); } + memset(&chunk_header, 0, sizeof(chunk_header)); + chunk_header.name_ = false; + chunk_header.entity_ = OMFormat::Chunk::Entity_Sentinel; + bytes += store(_os, chunk_header, swap); + std::clog << "#bytes written: " << bytes << std::endl; return true;