From e4f639e4a106d90c6f3159230788653fd6e40a26 Mon Sep 17 00:00:00 2001 From: Roland McGrath Date: Fri, 12 Dec 2014 13:17:21 -0800 Subject: NPTL: Refactor named semaphore code to use shm-directory.h --- sysdeps/posix/shm-directory.h | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'sysdeps/posix/shm-directory.h') diff --git a/sysdeps/posix/shm-directory.h b/sysdeps/posix/shm-directory.h index 1c4d965b28..84f1f94c80 100644 --- a/sysdeps/posix/shm-directory.h +++ b/sysdeps/posix/shm-directory.h @@ -36,9 +36,10 @@ extern const char *__shm_directory (size_t *len); strlen (NAME) + 1. If NAME is invalid, it sets errno to ERRNO_FOR_INVALID and returns RETVAL_FOR_INVALID. Finally, it defines the local variable SHM_NAME, giving the absolute file name of the shm - file corresponding to NAME. */ + file corresponding to NAME. PREFIX is a string constant used as a + prefix on NAME. */ -#define SHM_GET_NAME(errno_for_invalid, retval_for_invalid) \ +#define SHM_GET_NAME(errno_for_invalid, retval_for_invalid, prefix) \ size_t shm_dirlen; \ const char *shm_dir = __shm_directory (&shm_dirlen); \ /* If we don't know what directory to use, there is nothing we can do. */ \ @@ -57,7 +58,9 @@ extern const char *__shm_directory (size_t *len); __set_errno (errno_for_invalid); \ return retval_for_invalid; \ } \ - char *shm_name = __alloca (shm_dirlen + namelen); \ - __mempcpy (__mempcpy (shm_name, shm_dir, shm_dirlen), name, namelen) + char *shm_name = __alloca (shm_dirlen + sizeof prefix - 1 + namelen); \ + __mempcpy (__mempcpy (__mempcpy (shm_name, shm_dir, shm_dirlen), \ + prefix, sizeof prefix - 1), \ + name, namelen) #endif /* shm-directory.h */ -- cgit 1.4.1