X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Flib%2Fstring.c;h=d223c89f48493793c52dc45dbcf288328776fd6f;hb=HEAD;hp=bec4444670b025768485cb143edb0329de3cb60c;hpb=f2f8875638593bd5365cfd6a5ba7c9578e52322f;p=pintos-anon diff --git a/src/lib/string.c b/src/lib/string.c index bec4444..d223c89 100644 --- a/src/lib/string.c +++ b/src/lib/string.c @@ -190,7 +190,7 @@ strstr (const char *haystack, const char *needle) { size_t i; - for (i = 0; i < haystack_len - needle_len; i++) + for (i = 0; i <= haystack_len - needle_len; i++) if (!memcmp (haystack + i, needle, needle_len)) return (char *) haystack + i; } @@ -212,7 +212,9 @@ strstr (const char *haystack, const char *needle) single string. strtok_r() modifies the string S, changing delimiters to null - bytes. Thus, S must be a modifiable string. + bytes. Thus, S must be a modifiable string. String literals, + in particular, are *not* modifiable in C, even though for + backward compatibility they are not `const'. Example usage: @@ -333,7 +335,7 @@ strlcpy (char *dst, const char *src, size_t size) { size_t dst_len = size - 1; if (src_len < dst_len) - src_len = dst_len; + dst_len = src_len; memcpy (dst, src, dst_len); dst[dst_len] = '\0'; }