summaryrefslogtreecommitdiff
path: root/shmem/os2
diff options
context:
space:
mode:
authorbjh <bjh@13f79535-47bb-0310-9956-ffa450edef68>2001-12-29 10:00:41 +0000
committerbjh <bjh@13f79535-47bb-0310-9956-ffa450edef68>2001-12-29 10:00:41 +0000
commit71e430e91cdcb71bf3fe09735fb26f4e809af649 (patch)
treed73d67222545e759f4ac597ec404b8b3d8cf8ea2 /shmem/os2
parent2cf16da096a6a48cc65e03ccc479228c5fc4374c (diff)
downloadlibapr-71e430e91cdcb71bf3fe09735fb26f4e809af649.tar.gz
Fix handling of named shared memory
Allocate some extra space for heap structures so that a block of the same size as the reqsize can be allocated later with apr_shm_malloc(). git-svn-id: http://svn.apache.org/repos/asf/apr/apr/trunk@62681 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'shmem/os2')
-rw-r--r--shmem/os2/shmem.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/shmem/os2/shmem.c b/shmem/os2/shmem.c
index 672081f7c..e63ee0a63 100644
--- a/shmem/os2/shmem.c
+++ b/shmem/os2/shmem.c
@@ -72,11 +72,16 @@ APR_DECLARE(apr_status_t) apr_shm_init(struct shmem_t **m, apr_size_t reqsize, c
int rc;
struct shmem_t *newm = (struct shmem_t *)apr_palloc(cont, sizeof(struct shmem_t));
char *name = NULL;
+ ULONG flags = PAG_COMMIT|PAG_READ|PAG_WRITE;
if (file)
name = apr_pstrcat(cont, "\\SHAREMEM\\", file, NULL);
- rc = DosAllocSharedMem(&(newm->memblock), name, reqsize, PAG_COMMIT|OBJ_GETTABLE|PAG_READ|PAG_WRITE);
+ if (name == NULL)
+ flags |= OBJ_GETTABLE;
+
+ reqsize += 1024; /* Allow some overhead for heap structures */
+ rc = DosAllocSharedMem(&(newm->memblock), name, reqsize, flags);
if (rc)
return APR_OS2_STATUS(rc);