buildrootschalter/package/screen/screen-0002-no-memcpy-fallback.patch
Maarten ter Huurne 6a16e1631f screen: bump to version 4.2.1
I re-did the patches: one patch per change, patch configure.in instead
of the configure script itself, a few more issues fixed. This should
hopefully make the patches acceptable for upstream, or at least make it
easier to migrate them on version bumps.

This also fixes compilation with musl libc.

Signed-off-by: Maarten ter Huurne <maarten@treewalker.org>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2014-09-21 19:58:28 +02:00

123 lines
3.3 KiB
Diff

From: Maarten ter Huurne <maarten@treewalker.org>
Date: Sat, 13 Sep 2014 11:37:59 +0200
Subject: Do not use memcpy as an alternative for bcopy/memmove
The configure script runs a small test program to check whether
memcpy can handle overlapping memory areas. However, it is not valid
to conclude that if a single case of overlapping memory is handled
correctly, all cases will be handled correctly.
Since screen already has its own bcopy implementation as a fallback
for the case that bcopy and memmove are unusable, removing the memcpy
option should not break any systems.
Signed-off-by: Maarten ter Huurne <maarten@treewalker.org>
---
acconfig.h | 3 +--
configure.in | 18 +-----------------
os.h | 8 ++------
osdef.h.in | 10 +---------
4 files changed, 5 insertions(+), 34 deletions(-)
diff --git a/acconfig.h b/acconfig.h
index 2e46985..9b0b9d4 100644
--- a/acconfig.h
+++ b/acconfig.h
@@ -476,7 +476,7 @@
#undef GETTTYENT
/*
- * Define USEBCOPY if the bcopy/memcpy from your system's C library
+ * Define USEBCOPY if the bcopy from your system's C library
* supports the overlapping of source and destination blocks. When
* undefined, screen uses its own (probably slower) version of bcopy().
*
@@ -487,7 +487,6 @@
* Their memove fails the test in the configure script. Sigh. (Juergen)
*/
#undef USEBCOPY
-#undef USEMEMCPY
#undef USEMEMMOVE
/*
diff --git a/configure.in b/configure.in
index 572c2a3..ff9606d 100644
--- a/configure.in
+++ b/configure.in
@@ -1144,7 +1144,7 @@ AC_TRY_LINK(,[getttyent();], AC_DEFINE(GETTTYENT))
AC_CHECKING(fdwalk)
AC_TRY_LINK([#include <stdlib.h>], [fdwalk(NULL, NULL);],AC_DEFINE(HAVE_FDWALK))
-AC_CHECKING(whether memcpy/memmove/bcopy handles overlapping arguments)
+AC_CHECKING(whether memmove/bcopy handles overlapping arguments)
AC_TRY_RUN([
main() {
char buf[10];
@@ -1174,22 +1174,6 @@ main() {
exit(0); /* libc version works properly. */
}], AC_DEFINE(USEMEMMOVE))
-
-AC_TRY_RUN([
-#define bcopy(s,d,l) memcpy(d,s,l)
-main() {
- char buf[10];
- strcpy(buf, "abcdefghi");
- bcopy(buf, buf + 2, 3);
- if (strncmp(buf, "ababcf", 6))
- exit(1);
- strcpy(buf, "abcdefghi");
- bcopy(buf + 2, buf, 3);
- if (strncmp(buf, "cdedef", 6))
- exit(1);
- exit(0); /* libc version works properly. */
-}], AC_DEFINE(USEMEMCPY))
-
AC_SYS_LONG_FILE_NAMES
AC_MSG_CHECKING(for vsprintf)
diff --git a/os.h b/os.h
index 55de249..6838ec0 100644
--- a/os.h
+++ b/os.h
@@ -142,12 +142,8 @@ extern int errno;
# ifdef USEMEMMOVE
# define bcopy(s,d,len) memmove(d,s,len)
# else
-# ifdef USEMEMCPY
-# define bcopy(s,d,len) memcpy(d,s,len)
-# else
-# define NEED_OWN_BCOPY
-# define bcopy xbcopy
-# endif
+# define NEED_OWN_BCOPY
+# define bcopy xbcopy
# endif
#endif
diff --git a/osdef.h.in b/osdef.h.in
index 8687b60..e4057a0 100644
--- a/osdef.h.in
+++ b/osdef.h.in
@@ -58,16 +58,8 @@ extern int bcmp __P((char *, char *, int));
extern int killpg __P((int, int));
#endif
-#ifndef USEBCOPY
-# ifdef USEMEMCPY
-extern void memcpy __P((char *, char *, int));
-# else
-# ifdef USEMEMMOVE
+#if defined(USEMEMMOVE) && !defined(USEBCOPY)
extern void memmove __P((char *, char *, int));
-# else
-extern void bcopy __P((char *, char *, int));
-# endif
-# endif
#else
extern void bcopy __P((char *, char *, int));
#endif
--
1.8.4.5