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
[email protected]
https://lists.sourceforge.net/lists/listinfo/openbabel-devel