summaryrefslogtreecommitdiff
path: root/ace/MEM_SAP.i
diff options
context:
space:
mode:
Diffstat (limited to 'ace/MEM_SAP.i')
-rw-r--r--ace/MEM_SAP.i18
1 files changed, 14 insertions, 4 deletions
diff --git a/ace/MEM_SAP.i b/ace/MEM_SAP.i
index ad35e621ae1..b7b6ff58d83 100644
--- a/ace/MEM_SAP.i
+++ b/ace/MEM_SAP.i
@@ -19,7 +19,8 @@ ACE_MEM_SAP::acquire_buffer (const ssize_t size)
return 0; // not initialized.
size_t *lptr = ACE_static_cast (size_t *,
- this->shm_malloc_->malloc (sizeof (size_t) + size));
+ this->shm_malloc_->malloc (sizeof (size_t) + size));
+
*lptr = size;
++lptr;
@@ -64,10 +65,19 @@ ACE_MEM_SAP::get_buf_len (const off_t off, void *&buf)
if (this->shm_malloc_ == 0)
return -1;
- size_t *lptr = (size_t*) ((char *) this->shm_malloc_->memory_pool ().base_addr () + off);
- buf = lptr + 1;
+ ssize_t retv = 0;
+
+ ACE_SEH_TRY
+ {
+ size_t *lptr = (size_t*) ((char *) this->shm_malloc_->memory_pool ().base_addr () + off);
+ buf = lptr + 1;
+ retv = *lptr;
+ }
+ ACE_SEH_EXCEPT (this->shm_malloc_->memory_pool ().seh_selector (GetExceptionInformation ()))
+ {
+ }
- return *lptr;
+ return retv;
}
ASYS_INLINE int