fixed several off-by-one errors in string handling functions

loading and verifying .s19 files from basflash.s19 works!
This commit is contained in:
Markus Fröschle
2013-03-01 19:18:23 +00:00
parent 9c2a53b84e
commit 7535bb7333
3 changed files with 29 additions and 9 deletions

View File

@@ -12,9 +12,9 @@ int strncmp(const char *s1, const char *s2, int max)
int i;
int cmp;
for (i = 0; i < max; i++);
for (i = 0; i < max && *s1++ && *s2++; i++);
{
cmp = (*s1++ - *s2++);
cmp = (*s1 - *s2);
if (cmp != 0) return cmp;
}
return cmp;
@@ -46,20 +46,29 @@ size_t strlen(const char *s)
while (*s++);
return s - start;
return s - start - 1;
}
int strncat(char *dst, char *src, int max)
char *strcat(char *dst, const char *src)
{
char *ret = dst;
dst = &dst[strlen(dst)];
while ((*dst++ = *src++) != '\0');
return ret;
}
char *strncat(char *dst, const char *src, int max)
{
int i;
char *ret = dst;
dst = &dst[strlen(dst) + 1];
dst = &dst[strlen(dst)];
for (i = 0; i < max && *src; i++)
{
*dst++ = *src++;
}
*dst++ = '\0';
return i;
return ret;
}