From 3d63757374571c24567a2b66b6056dff502e7172 Mon Sep 17 00:00:00 2001
From: Xavier Robin <xavier.robin@unibas.ch>
Date: Mon, 3 Jul 2023 16:27:37 +0200
Subject: [PATCH] fix: ignore invalid charge with fault_tolerant

---
 modules/io/src/mol/pdb_reader.cc | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/modules/io/src/mol/pdb_reader.cc b/modules/io/src/mol/pdb_reader.cc
index 930ffbcf4..ee9cb18ed 100644
--- a/modules/io/src/mol/pdb_reader.cc
+++ b/modules/io/src/mol/pdb_reader.cc
@@ -737,10 +737,15 @@ void PDBReader::ParseAndAddAtom(const StringRef& line, int line_num,
       if(charge.first) {
         if(line[79] != '-' && line[79] != '+') {
           std::stringstream ss;
-          ss << "error on line " << line_num << ": "
-             << "expect charge in format 1+, 2-, etc. got: "
+          ss << "invalid charge on line " << line_num << ": "
+             << "expected 1+, 2-, etc. got: "
              << line.substr(78, 2);
-          throw IOException(ss.str());      
+          if (profile_.fault_tolerant) {
+            LOG_WARNING(ss.str());
+            charge.first = 0.0;
+          } else {
+            throw IOException(ss.str());
+          }
         }
         if(line[79] == '-') charge.second *= (-1);
       }
-- 
GitLab