From 728bb8defea43f1dce3ab73db93be7fe1f04ea62 Mon Sep 17 00:00:00 2001 From: Brian Kelley Date: Thu, 10 Sep 2020 02:11:47 -0400 Subject: [PATCH] Fixes #3403 (#3405) * Fixes #3403 * Fix Typo V is actually a set so we can clear it. * Fix bug, use self.assertFalse --- Code/GraphMol/Substruct/SubstructMatch.cpp | 8 +++++--- Code/GraphMol/Wrap/rough_test.py | 13 +++++++++++++ 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/Code/GraphMol/Substruct/SubstructMatch.cpp b/Code/GraphMol/Substruct/SubstructMatch.cpp index e6d3e8547..7cfedec22 100644 --- a/Code/GraphMol/Substruct/SubstructMatch.cpp +++ b/Code/GraphMol/Substruct/SubstructMatch.cpp @@ -462,12 +462,14 @@ std::vector SubstructMatch( } } -#ifdef RDK_THREADSAFE_SSS if (params.recursionPossible) { - BOOST_FOREACH (RecursiveStructureQuery *v, locked) + BOOST_FOREACH (RecursiveStructureQuery *v, locked) { + v->clear(); +#ifdef RDK_THREADSAFE_SSS v->d_mutex.unlock(); - } #endif + } + } return matches; } diff --git a/Code/GraphMol/Wrap/rough_test.py b/Code/GraphMol/Wrap/rough_test.py index 1cd30e1a1..be0583d62 100644 --- a/Code/GraphMol/Wrap/rough_test.py +++ b/Code/GraphMol/Wrap/rough_test.py @@ -6142,7 +6142,20 @@ M END for mol, refMol in zip(mols, refMols): self.assertEqual(Chem.MolToSmiles(mol), Chem.MolToSmiles(refMol)) + def test_github3403(self): + core1 = "[$(C-!@[a])](=O)(Cl)" + sma = Chem.MolFromSmarts(core1) + + m = Chem.MolFromSmiles("c1ccccc1C(=O)Cl") + self.assertFalse(m.HasSubstructMatch(sma, recursionPossible=False)) + + m = Chem.MolFromSmiles("c1ccccc1C(=O)Cl") + self.assertTrue(m.HasSubstructMatch(sma)) + + m = Chem.MolFromSmiles("c1ccccc1C(=O)Cl") + self.assertFalse(m.HasSubstructMatch(sma, recursionPossible=False)) + if __name__ == '__main__': if "RDTESTCASE" in os.environ: suite = unittest.TestSuite()