From: Ralf Wildenhues Date: Mon, 13 Sep 2004 12:56:00 +0000 (+0000) Subject: * ltdl.c (memcpy, memmove): Fix pre-ANSI replacement functions X-Git-Tag: release-1-5-10~3 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=2bea9fb320cf4890dfab7773632ea21eaf5d5ead;p=thirdparty%2Flibtool.git * ltdl.c (memcpy, memmove): Fix pre-ANSI replacement functions to not use pointer-to-void arithmetic. (memmove): Fix infinite loop. --- diff --git a/ChangeLog b/ChangeLog index c709de63d..2526fd3cb 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2004-09-13 Ralf Wildenhues + + * ltdl.c (memcpy, memmove): Fix pre-ANSI replacement functions + to not use pointer-to-void arithmetic. + (memmove): Fix infinite loop. + 2004-09-12 Brad * libtool.m4: Fixes for the OpenBSD support @@ -58,7 +64,7 @@ 2004-08-01 Maciej W. Rozycki - * libtool.m4 (LT_AC_PROG_SED): Set SED when running from cache as + * libtool.m4 (LT_AC_PROG_SED): Set SED when running from cache as well. 2004-07-30 Peter O'Gorman @@ -78,7 +84,7 @@ 2004-07-22 Joe Orton - * libtool.m4: Treat bsdi5* like bsdi4*. + * libtool.m4: Treat bsdi5* like bsdi4*. 2004-07-08 Peter O'Gorman diff --git a/libltdl/ltdl.c b/libltdl/ltdl.c index 5ea74635a..cd99acceb 100644 --- a/libltdl/ltdl.c +++ b/libltdl/ltdl.c @@ -1,5 +1,5 @@ /* ltdl.c -- system independent dlopen wrapper - Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc. + Copyright (C) 1998, 1999, 2000, 2004 Free Software Foundation, Inc. Originally by Thomas Tanner This file is part of GNU Libtool. @@ -385,11 +385,13 @@ memcpy (dest, src, size) const lt_ptr src; size_t size; { - size_t i = 0; + const char * s = src; + char * d = dest; + size_t i = 0; for (i = 0; i < size; ++i) { - dest[i] = src[i]; + d[i] = s[i]; } return dest; @@ -409,17 +411,21 @@ memmove (dest, src, size) const lt_ptr src; size_t size; { - size_t i; + const char * s = src; + char * d = dest; + size_t i; - if (dest < src) + if (d < s) for (i = 0; i < size; ++i) { - dest[i] = src[i]; + d[i] = s[i]; } - else if (dest > src) - for (i = size -1; i >= 0; --i) + else if (d > s && size > 0) + for (i = size -1; ; --i) { - dest[i] = src[i]; + d[i] = s[i]; + if (i == 0) + break; } return dest;