top: trade that 'strncpy' for more efficient 'memccpy'
This patch was prompted by the merge request for pgrep referenced below. In top's case, any performance gains will be minimal since the now defunct strncpy was only employed for termcap rebuilds after interacting with a user (+ 1 other non-termcap related user interaction). [ golly, strncpy always calls at least two functions ] [ but usually calls a total of 3. on the other hand, ] [ memccpy will only call a maximum of two functions. ] And thanks to Baruch Siach for these strncpy insights. Reference(s): https://gitlab.com/procps-ng/procps/-/merge_requests/148 Signed-off-by: Jim Warner <james.warner@comcast.net>
This commit is contained in:
parent
41b2b9dca8
commit
204194cdc4
@ -509,7 +509,7 @@ typedef struct WIN_t {
|
|||||||
|
|
||||||
/* A null-terminating strncpy, assuming strlcpy is not available.
|
/* A null-terminating strncpy, assuming strlcpy is not available.
|
||||||
( and assuming callers don't need the string length returned ) */
|
( and assuming callers don't need the string length returned ) */
|
||||||
#define STRLCPY(dst,src) { strncpy(dst, src, sizeof(dst)); dst[sizeof(dst) - 1] = '\0'; }
|
#define STRLCPY(dst,src) { memccpy(dst, src, '\0', sizeof(dst)); dst[sizeof(dst) - 1] = '\0'; }
|
||||||
|
|
||||||
/* Used to clear all or part of our Pseudo_screen */
|
/* Used to clear all or part of our Pseudo_screen */
|
||||||
#define PSU_CLREOS(y) memset(&Pseudo_screen[ROWMAXSIZ*y], '\0', Pseudo_size-(ROWMAXSIZ*y))
|
#define PSU_CLREOS(y) memset(&Pseudo_screen[ROWMAXSIZ*y], '\0', Pseudo_size-(ROWMAXSIZ*y))
|
||||||
|
Loading…
Reference in New Issue
Block a user