]> OCCT Git - occt.git/commitdiff
fix error CR0-glb-stream-reader
authorsshutina <svetlana.shutina@opencascade.com>
Fri, 11 Apr 2025 10:02:51 +0000 (11:02 +0100)
committersshutina <svetlana.shutina@opencascade.com>
Fri, 11 Apr 2025 10:02:51 +0000 (11:02 +0100)
src/DataExchange/TKDEGLTF/RWGltf/RWGltf_GltfJsonParser.cxx
src/DataExchange/TKDEGLTF/RWGltf/RWGltf_GltfJsonParser.hxx

index 52cbc1072fbdd976daf39932aeb03f83a848a3df..3fc19434719f1ea2f0c2650bc3399903c9f0c37e 100644 (file)
@@ -20,6 +20,7 @@
 #include <Message_Messenger.hxx>
 #include <Message_ProgressScope.hxx>
 #include <OSD_File.hxx>
+#include <OSD_FileSystem.hxx>
 #include <OSD_OpenFile.hxx>
 #include <OSD_Path.hxx>
 #include <OSD_ThreadPool.hxx>
@@ -2460,6 +2461,18 @@ void RWGltf_GltfJsonParser::bindNamedShape(TopoDS_Shape&                     the
 bool RWGltf_GltfJsonParser::fillMeshData(
   const Handle(RWGltf_GltfLatePrimitiveArray)& theMeshData) const
 {
+  if (myStream == nullptr)
+  {
+    const Handle(OSD_FileSystem)& aFileSystem = OSD_FileSystem::DefaultFileSystem();
+    myStream = aFileSystem->OpenIStream(myFilePath, std::ios::in | std::ios::binary);
+  }
+
+  if (myStream == nullptr)
+  {
+    reportGltfError("Buffer '" + myFilePath + "' isn't defined.");
+    return false;
+  }
+
   for (NCollection_Sequence<RWGltf_GltfPrimArrayData>::Iterator aDataIter(theMeshData->Data());
        aDataIter.More();
        aDataIter.Next())
index e897d5bfaf1a1eb4d6e0ffe087717a85140cff2c..7982d2e41d84cef5e3a77e424eb0dc42812a1257 100644 (file)
@@ -445,7 +445,7 @@ protected:
                                                     // clang-format on
   TColStd_IndexedDataMapOfStringString* myMetadata; //!< file metadata
 
-  std::shared_ptr<std::istream> myStream; //!< input stream
+  mutable std::shared_ptr<std::istream> myStream; //!< input stream
 
   NCollection_DataMap<TCollection_AsciiString, Handle(RWGltf_MaterialMetallicRoughness)>
                                                                               myMaterialsPbr;