From c6290a8d4b6dcb3aa06779286670da4fe2d4fb1f Mon Sep 17 00:00:00 2001 From: rfelker Date: Tue, 25 Oct 2005 17:13:20 +0000 Subject: fix broken (off-by-one) behavior of our strl* functions (patch by reimar) git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@16854 b3059339-0415-0410-9bf9-f77b7e298cf2 --- osdep/strl.c | 22 +++++----------------- 1 file changed, 5 insertions(+), 17 deletions(-) (limited to 'osdep') diff --git a/osdep/strl.c b/osdep/strl.c index 8c0949a889..664ab7905c 100644 --- a/osdep/strl.c +++ b/osdep/strl.c @@ -11,10 +11,14 @@ unsigned int strlcpy (char *dest, const char *src, unsigned int size) { register unsigned int i; + if (size > 0) { + size--; for (i=0; size > 0 && src[i] != '\0'; ++i, size--) dest[i] = src[i]; dest[i] = '\0'; + } + while (src[i++]); return i; } @@ -23,26 +27,10 @@ unsigned int strlcpy (char *dest, const char *src, unsigned int size) #ifndef HAVE_STRLCAT unsigned int strlcat (char *dest, const char *src, unsigned int size) { -#if 0 - register unsigned int i, j; - - for(i=0; size > 0 && dest[i] != '\0'; size--, i++); - for(j=0; size > 0 && src[j] != '\0'; size--, i++, j++) - dest[i] = src[j]; - - dest[i] = '\0'; - return i; -#else register char *d = dest; - register const char *s = src; for (; size > 0 && *d != '\0'; size--, d++); - for (; size > 0 && *s != '\0'; size--, d++, s++) - *d = *s; - - *d = '\0'; - return (d - dest) + (s - src); -#endif + return (d - dest) + strlcpy(d, src, size); } #endif -- cgit v1.2.3