Menu

#1375 SmilesParser throws ArrayIndexOutOfBoundsException on invalid smiles

cdk-1.6.x
closed
John May
smiles (1)
1
2015-11-27
2015-11-23
No

instead of InvalidSmilesException

    @Test
    public void testInvalidSmiles() throws Exception {
        SmilesParser parser = new SmilesParser(
                SilentChemObjectBuilder.getInstance());
        try {
            parser.parseSmiles("50-00-0");
        } catch (InvalidSmilesException x) {
            Assert.assertTrue(true);
        } catch (Exception x) {
            throw x;
        }
    }

java.lang.ArrayIndexOutOfBoundsException: -1
    at uk.ac.ebi.beam.IntStack.peek(IntStack.java:87)
    at uk.ac.ebi.beam.Parser.openRing(Parser.java:650)
    at uk.ac.ebi.beam.Parser.ring(Parser.java:634)
    at uk.ac.ebi.beam.Parser.readSmiles(Parser.java:400)
    at uk.ac.ebi.beam.Parser.<init>(Parser.java:101)
    at uk.ac.ebi.beam.Parser.<init>(Parser.java:117)
    at uk.ac.ebi.beam.Parser.parse(Parser.java:748)
    at uk.ac.ebi.beam.Graph.fromSmiles(Graph.java:344)
    at org.openscience.cdk.smiles.SmilesParser.parseSmiles(SmilesParser.java:203)

tested with cdk 1.5.11

Discussion

  • John May

    John May - 2015-11-24

    Hmm, kind of tempted just to put a catch all around the Beam parsing...
    it's not really meant to parse any text to test for SMILES that should be
    done with a grammar recognizer.

     
  • Egon Willighagen

    Happy both the suggestions.

     
  • John May

    John May - 2015-11-27
     
  • John May

    John May - 2015-11-27
    • status: open --> closed