summaryrefslogtreecommitdiff
path: root/libopie/pim/otodoaccessxml.cpp
authorzecke <zecke>2003-02-22 16:33:34 (UTC)
committer zecke <zecke>2003-02-22 16:33:34 (UTC)
commit2424bcd292444b3a03c9b92dbc7f5b392c355755 (patch) (side-by-side diff)
tree7f909f39bce8ba8501d07dc6ff238ae7918fc8de /libopie/pim/otodoaccessxml.cpp
parent66b00525256255290dfcd9d48ebe1539f15b8dce (diff)
downloadopie-2424bcd292444b3a03c9b92dbc7f5b392c355755.zip
opie-2424bcd292444b3a03c9b92dbc7f5b392c355755.tar.gz
opie-2424bcd292444b3a03c9b92dbc7f5b392c355755.tar.bz2
fixx off by one in reading
Diffstat (limited to 'libopie/pim/otodoaccessxml.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--libopie/pim/otodoaccessxml.cpp30
1 files changed, 29 insertions, 1 deletions
diff --git a/libopie/pim/otodoaccessxml.cpp b/libopie/pim/otodoaccessxml.cpp
index 22b2469..cda300b 100644
--- a/libopie/pim/otodoaccessxml.cpp
+++ b/libopie/pim/otodoaccessxml.cpp
@@ -19,2 +19,30 @@
+namespace {
+ // FROM TT again
+char *strstrlen(const char *haystack, int hLen, const char* needle, int nLen)
+{
+ char needleChar;
+ char haystackChar;
+ if (!needle || !haystack || !hLen || !nLen)
+ return 0;
+
+ const char* hsearch = haystack;
+
+ if ((needleChar = *needle++) != 0) {
+ nLen--; //(to make up for needle++)
+ do {
+ do {
+ if ((haystackChar = *hsearch++) == 0)
+ return (0);
+ if (hsearch >= haystack + hLen)
+ return (0);
+ } while (haystackChar != needleChar);
+ } while (strncmp(hsearch, needle, QMIN(hLen - (hsearch - haystack), nLen)) != 0);
+ hsearch--;
+ }
+ return ((char *)hsearch);
+}
+}
+
+
OTodoAccessXML::OTodoAccessXML( const QString& appName,
@@ -87,3 +115,3 @@ bool OTodoAccessXML::load() {
int strLen = strlen(collectionString);
- while ( dt+i != 0 && ( point = strstr( dt+i, collectionString ) ) != 0l ) {
+ while ( ( point = strstrlen( dt+i, len -i, collectionString, strLen ) ) != 0l ) {
i = point -dt;