diff options
author | bjh <bjh@13f79535-47bb-0310-9956-ffa450edef68> | 2001-12-29 10:00:41 +0000 |
---|---|---|
committer | bjh <bjh@13f79535-47bb-0310-9956-ffa450edef68> | 2001-12-29 10:00:41 +0000 |
commit | 71e430e91cdcb71bf3fe09735fb26f4e809af649 (patch) | |
tree | d73d67222545e759f4ac597ec404b8b3d8cf8ea2 /shmem/os2 | |
parent | 2cf16da096a6a48cc65e03ccc479228c5fc4374c (diff) | |
download | libapr-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.c | 7 |
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); |