Hi all,

I am currently implementing some changes to the MOPAC file format
reader which requires use of the tokenize() function (the variant that
takes 3 inputs) in tokenst.cpp.

However, this appears to contain a bug where the last token is
sometimes not parsed:

tokenize(vs, "a.b.", ".") results in vs.size()=2, vs[0] = "a", vs[1] = "b"
but tokenize(vs, "a.b", ".") results in vs.size()=1, vs[0] = "a" only.

I have a patch that will fix this behavior sufficiently for my
purposes. I would like to commit this upstream, but I thought I would
ask first since this would modify a core utility function and could
very well break code that expects this behavior.

===================================================================
--- tokenst.cpp (revision 4519)
+++ tokenst.cpp (working copy)
@@ -43,14 +43,20 @@
     string s(buf);
     s += "\n";
     size_t startpos=0,endpos=0;
+    size_t s_size = s.size();

     for (;;)
       {
         startpos = s.find_first_not_of(delimstr,startpos);
         endpos = s.find_first_of(delimstr,startpos);

-        if (endpos <= s.size() && startpos <= s.size())
+        if (endpos <= s_size && startpos <= s_size)
           vcr.push_back(s.substr(startpos,endpos-startpos));
+       else if (startpos < s_size) //process last token - cjh 2011-07-02
+       {
+          vcr.push_back(s.substr(startpos,s_size-startpos));
+         break;
+       }
         else
           break;

Thanks,

 · Jiahao Chen · MIT Chemistry ·

------------------------------------------------------------------------------
All of the data generated in your IT infrastructure is seriously valuable.
Why? It contains a definitive record of application performance, security 
threats, fraudulent activity, and more. Splunk takes this data and makes 
sense of it. IT sense. And common sense.
http://p.sf.net/sfu/splunk-d2d-c2
_______________________________________________
OpenBabel-Devel mailing list
OpenBabel-Devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openbabel-devel

Reply via email to