summaryrefslogtreecommitdiff
path: root/strings
diff options
context:
space:
mode:
authorYann Ylavic <ylavic@apache.org>2021-03-11 17:25:41 +0000
committerYann Ylavic <ylavic@apache.org>2021-03-11 17:25:41 +0000
commit7261729cc2d7e74a4c263a120199bcac57fa1f1e (patch)
treec1f7174de2623f599334512b693798fcd4492f72 /strings
parent7ac989b2a8562710cc5913992c6b273ee2b627d4 (diff)
downloadapr-7261729cc2d7e74a4c263a120199bcac57fa1f1e.tar.gz
Follow up to r1887060: fix compilation on BEOS.
poffset is undefined there, by inspection (no BEOS at hand..). git-svn-id: https://svn.apache.org/repos/asf/apr/apr/trunk@1887500 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'strings')
-rw-r--r--strings/apr_cstr.c41
1 files changed, 15 insertions, 26 deletions
diff --git a/strings/apr_cstr.c b/strings/apr_cstr.c
index 7717c4406..4897bbd2c 100644
--- a/strings/apr_cstr.c
+++ b/strings/apr_cstr.c
@@ -197,7 +197,7 @@ APR_DECLARE(char *) apr_cstr_join(const apr_array_header_t *strings,
* octets (such as extended latin alphabetics) are never case-folded.
* NOTE: Other than Alpha A-Z/a-z, each code point is unique!
*/
-static const short ucharmap[] = {
+static const unsigned char ucharmap[] = {
0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7,
0x8, 0x9, 0xa, 0xb, 0xc, 0xd, 0xe, 0xf,
0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
@@ -244,7 +244,7 @@ static const short ucharmap[] = {
*
* NOTE: Other than Alpha A-Z/a-z, each code point is unique!
*/
-static const short ucharmap[] = {
+static const unsigned char ucharmap[] = {
0x00, 0x01, 0x02, 0x03, 0x9C, 0x09, 0x86, 0x7F,
0x97, 0x8D, 0x8E, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
0x10, 0x11, 0x12, 0x13, 0x9D, 0x85, 0x08, 0x87,
@@ -282,36 +282,25 @@ static const short ucharmap[] = {
APR_DECLARE(int) apr_cstr_casecmp(const char *s1, const char *s2)
{
- const unsigned char *str1 = (const unsigned char *)s1;
- const unsigned char *str2 = (const unsigned char *)s2;
- for (;;)
- {
- const int c1 = (int)(*str1);
- const int c2 = (int)(*str2);
- const int cmp = ucharmap[c1] - ucharmap[c2];
- /* Not necessary to test for !c2, this is caught by cmp */
- if (cmp || !c1)
- return cmp;
- str1++;
- str2++;
+ apr_size_t i = 0;
+ for (;; ++i) {
+ const int c1 = ucharmap[(unsigned char)s1[i]];
+ const int c2 = ucharmap[(unsigned char)s2[i]] - c1;
+ if (!c1 || c2)
+ return c2;
}
+ return 0;
}
APR_DECLARE(int) apr_cstr_casecmpn(const char *s1, const char *s2,
apr_size_t n)
{
- const unsigned char *str1 = (const unsigned char *)s1;
- const unsigned char *str2 = (const unsigned char *)s2;
- while (n--)
- {
- const int c1 = (int)(*str1);
- const int c2 = (int)(*str2);
- const int cmp = ucharmap[c1] - ucharmap[c2];
- /* Not necessary to test for !c2, this is caught by cmp */
- if (cmp || !c1)
- return cmp;
- str1++;
- str2++;
+ apr_size_t i = 0;
+ for (; i < n; ++i) {
+ const int c1 = ucharmap[(unsigned char)s1[i]];
+ const int c2 = ucharmap[(unsigned char)s2[i]] - c1;
+ if (!c1 || c2)
+ return c2;
}
return 0;
}