diff options
-rw-r--r-- | ace/MEM_SAP.i | 18 |
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 |