summaryrefslogtreecommitdiff
path: root/ace/SString.cpp
diff options
context:
space:
mode:
authorirfan <irfan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1998-11-19 06:31:57 +0000
committerirfan <irfan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1998-11-19 06:31:57 +0000
commit37ca19ecbb89b2cdfbd6eda8a7664cdca9b9688f (patch)
tree937d70c7e0071f4956f236c83c2aa012d52aedc8 /ace/SString.cpp
parent668ab2b34e957a07a9bdc9db38989710888523f4 (diff)
downloadATCD-37ca19ecbb89b2cdfbd6eda8a7664cdca9b9688f.tar.gz
*** empty log message ***
Diffstat (limited to 'ace/SString.cpp')
-rw-r--r--ace/SString.cpp17
1 files changed, 9 insertions, 8 deletions
diff --git a/ace/SString.cpp b/ace/SString.cpp
index 226e5ca13e4..ad68e13c610 100644
--- a/ace/SString.cpp
+++ b/ace/SString.cpp
@@ -899,22 +899,23 @@ ACE_WString::strstr (const ACE_USHORT16 *s1,
{
ACE_TRACE ("ACE_WString::strstr");
+ // Original string length
size_t len1 = ACE_WString::strlen (s1);
+ // Substring length
size_t len2 = ACE_WString::strlen (s2);
+ // Check if the substring is longer than the string being searched.
+ if (len2 > len1)
+ return 0;
+
+ // Go upto <len>
size_t len = len1 - len2;
for (size_t i = 0; i <= len; i++)
{
- size_t j;
-
- for (j = 0; j < len2; j++)
- if (s1[i + j] != s2[j])
- break;
-
- if (j == len2)
+ if (ACE_OS::memcmp (s1 + i, s2, len2 * sizeof (ACE_USHORT16)) == 0)
// Found a match! Return the index.
- return &s1[i];
+ return s1 + i;
}
return 0;