about summary refs log tree commit diff
path: root/sysdeps/posix/shm-directory.h
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/posix/shm-directory.h')
-rw-r--r--sysdeps/posix/shm-directory.h11
1 files changed, 7 insertions, 4 deletions
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 */