summaryrefslogtreecommitdiff
path: root/Source/DOH/string.c
diff options
context:
space:
mode:
Diffstat (limited to 'Source/DOH/string.c')
-rw-r--r--Source/DOH/string.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/Source/DOH/string.c b/Source/DOH/string.c
index 50676c7c3..cfc6c70f6 100644
--- a/Source/DOH/string.c
+++ b/Source/DOH/string.c
@@ -181,10 +181,10 @@ static int String_hash(DOH *so) {
return s->hashkey;
} else {
register char *c = s->str;
- register int len = s->len > 50 ? 50 : s->len;
- register int h = 0;
- register int mlen = len >> 2;
- register int i = mlen;
+ register unsigned int len = s->len > 50 ? 50 : s->len;
+ register unsigned int h = 0;
+ register unsigned int mlen = len >> 2;
+ register unsigned int i = mlen;
for (; i; --i) {
h = (h << 5) + *(c++);
h = (h << 5) + *(c++);
@@ -195,7 +195,7 @@ static int String_hash(DOH *so) {
h = (h << 5) + *(c++);
}
h &= 0x7fffffff;
- s->hashkey = h;
+ s->hashkey = (int)h;
return h;
}
}
@@ -1114,6 +1114,7 @@ DOHString *DohNewStringWithSize(const DOHString_or_char *so, int len) {
str->maxsize = max;
if (s) {
strncpy(str->str, s, len);
+ str->str[l] = 0;
str->len = l;
str->sp = l;
} else {