diff --git a/src/text_file_reader.cpp b/src/text_file_reader.cpp index 61bd803aa8..7344c6d5c3 100644 --- a/src/text_file_reader.cpp +++ b/src/text_file_reader.cpp @@ -41,7 +41,7 @@ using namespace LAMMPS_NS; * \param filetype Description of file type for error messages */ TextFileReader::TextFileReader(const std::string &filename, const std::string &filetype) - : filetype(filetype), ignore_comments(true) + : filetype(filetype), closefp(true), ignore_comments(true) { fp = fopen(filename.c_str(), "r"); @@ -58,7 +58,7 @@ TextFileReader::TextFileReader(const std::string &filename, const std::string &f * \param filetype Description of file type for error messages */ TextFileReader::TextFileReader(FILE *fp, const std::string &filetype) - : filetype(filetype), fp(fp), ignore_comments(true) + : filetype(filetype), closefp(false), fp(fp), ignore_comments(true) { if (fp == nullptr) throw FileReaderException("Invalid file descriptor"); } @@ -66,7 +66,7 @@ TextFileReader::TextFileReader(FILE *fp, const std::string &filetype) /** Closes the file */ TextFileReader::~TextFileReader() { - fclose(fp); + if (closefp) fclose(fp); } /** Read the next line and ignore it */ diff --git a/src/text_file_reader.h b/src/text_file_reader.h index bfd6e558ff..327d57c059 100644 --- a/src/text_file_reader.h +++ b/src/text_file_reader.h @@ -26,6 +26,7 @@ namespace LAMMPS_NS { class TextFileReader { std::string filetype; + bool closefp; static constexpr int MAXLINE = 1024; char line[MAXLINE]; FILE *fp;