From 041210b22813850a5c9720ef8b6f134ec0f50e00 Mon Sep 17 00:00:00 2001 From: Renaud Fivet Date: Fri, 26 Aug 2022 11:16:45 +0800 Subject: [PATCH] Use memmove instead of memcpy for overlapping memory area. (reproducible on OpenBSD). --- README.md | 6 +++--- defines.h | 2 +- exec.c | 6 ++---- line.c | 2 +- pklock.c | 4 ---- posix.c | 8 ++++++-- 6 files changed, 13 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index d9aa711..b6bc439 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # README # -µEMACS (ue) on Cygwin/Linux/NetBSD, based on uEmacs/PK (em) from [kernel.org]( -https://git.kernel.org/pub/scm/editors/uemacs/uemacs.git/). +µEMACS (ue) on Cygwin/MSYS2/Linux/NetBSD/OpenBSD, based on uEmacs/PK (em) +from [kernel.org](https://git.kernel.org/pub/scm/editors/uemacs/uemacs.git/). ### Changes compare to uEmacs/PK ### @@ -26,6 +26,6 @@ https://git.kernel.org/pub/scm/editors/uemacs/uemacs.git/). ### How to build ### -* dependencies: gcc, gmake, ncurses-devel. +* dependencies: (gcc || clang) && gmake && ncurses-devel. * make diff --git a/defines.h b/defines.h index dce2d05..c222c75 100644 --- a/defines.h +++ b/defines.h @@ -4,7 +4,7 @@ #if __unix__ || (defined(__APPLE__) && defined(__MACH__)) # define UNIX 1 -# if __NetBSD__ || (defined(__APPLE__) && defined(__MACH__)) +# if __NetBSD__ || __OpenBSD__ || (defined(__APPLE__) && defined(__MACH__)) # define BSD 1 # define POSIX 1 # elif __linux__ diff --git a/exec.c b/exec.c index b6577d4..c8bf6cc 100644 --- a/exec.c +++ b/exec.c @@ -557,9 +557,7 @@ static int dobuf( buffer_p bp) { /* remove leading spaces */ if( eline != lp->l_text) { int size = lp->l_used = eol - eline ; - if( size) - memcpy( lp->l_text, eline, size) ; - + memmove( lp->l_text, eline, size) ; eline = lp->l_text ; eol = &lp->l_text[ size] ; } @@ -595,7 +593,7 @@ static int dobuf( buffer_p bp) { /* turn line into a string */ int size = lp->l_used - 6 ; if( size) - memcpy( lp->l_text, &eline[ 6], size) ; + memmove( lp->l_text, &eline[ 6], size) ; eline = lp->l_text ; eline[ size] = 0 ; diff --git a/line.c b/line.c index 593a87b..29b5af5 100644 --- a/line.c +++ b/line.c @@ -455,7 +455,7 @@ boolean lnewline( void) { memcpy( lp2->l_text, lp1->l_text, doto) ; lp1->l_used -= doto ; - memcpy( lp1->l_text, &lp1->l_text[ doto], lp1->l_used) ; + memmove( lp1->l_text, &lp1->l_text[ doto], lp1->l_used) ; lp2->l_fp = lp1 ; lp2->l_bp = lp1->l_bp ; lp1->l_bp = lp2 ; diff --git a/pklock.c b/pklock.c index 3354946..f86afec 100644 --- a/pklock.c +++ b/pklock.c @@ -12,11 +12,7 @@ #include #include #include -#ifdef SVR4 #include -#else -#include -#endif #include #include "util.h" diff --git a/posix.c b/posix.c index fdf649d..8182920 100644 --- a/posix.c +++ b/posix.c @@ -31,8 +31,12 @@ int ttcol = -1 ; /* Column location of HW cursor */ /* Define missing macroes for BSD and CYGWIN environment */ #if BSD -#define OLCUC 0000002 -#define XCASE 0000004 +# ifndef OLCUC +# define OLCUC 0000002 +# endif +# ifndef XCASE +# define XCASE 0000004 +# endif #endif #ifdef __CYGWIN__ /* gcc predefined (see cpp -dM) */