@@ -100,7 +100,7 @@ struct TorchImporter : public ::cv::dnn::Importer
100
100
typedef std::map<String, std::pair<int , Mat> > TensorsMap;
101
101
Net net;
102
102
103
- THFile * file;
103
+ cv::Ptr< THFile> file;
104
104
std::set<int > readedIndexes;
105
105
std::map<int , Mat> storages;
106
106
std::map<int , Mat> tensors;
@@ -126,7 +126,7 @@ struct TorchImporter : public ::cv::dnn::Importer
126
126
rootModule = curModule = NULL ;
127
127
moduleCounter = 0 ;
128
128
129
- file = THDiskFile_new (filename.c_str (), " r" , 0 );
129
+ file = cv::Ptr<THFile>( THDiskFile_new (filename.c_str (), " r" , 0 ), THFile_free );
130
130
CV_Assert (file && THFile_isOpened (file));
131
131
132
132
if (isBinary)
@@ -976,18 +976,20 @@ struct TorchImporter : public ::cv::dnn::Importer
976
976
{
977
977
CV_TRACE_FUNCTION ();
978
978
979
- if (rootModule == NULL )
980
- {
981
- rootModule = new Module ( " Sequential " );
982
- curModule = rootModule;
979
+ CV_Assert (rootModule == NULL );
980
+ cv::Ptr<Module> rootModule_ = cv::makePtr<Module>( " Sequential " );
981
+ rootModule = rootModule_. get ( );
982
+ curModule = rootModule;
983
983
984
- THFile_seek (file, 0 );
985
- readObject ();
986
- }
984
+ THFile_seek (file, 0 );
985
+ readObject ();
987
986
988
987
net = net_;
989
988
std::vector<std::pair<int , Module*> > addedModules;
990
989
fill (rootModule, addedModules);
990
+
991
+ rootModule = NULL ;
992
+ curModule = NULL ;
991
993
}
992
994
};
993
995
0 commit comments