diff options
-rw-r--r-- | include/rtl/alloc.h | 13 | ||||
-rw-r--r-- | sal/osl/unx/memory.c | 13 |
2 files changed, 21 insertions, 5 deletions
diff --git a/include/rtl/alloc.h b/include/rtl/alloc.h index 01a556b89715..6a804928669c 100644 --- a/include/rtl/alloc.h +++ b/include/rtl/alloc.h @@ -96,14 +96,20 @@ SAL_DLLPUBLIC void SAL_CALL rtl_freeZeroMemory ( ) SAL_THROW_EXTERN_C(); -/** Allocate memory. +/** Allocate aligned memory. A call to this function will return NULL upon the requested memory size being either zero or larger than currently allocatable. - @param Alignment alignment in bytes. + Memory obtained through this function must be freed with + rtl_freeAlignedMemory. + + @param Alignment [in] alignment in bytes, must be a power of two multiple of + sizeof(void*). @param Bytes [in] memory size. @return pointer to allocated memory. + + @since LibreOffice 4.3 */ SAL_DLLPUBLIC void* SAL_CALL rtl_allocateAlignedMemory ( sal_Size Alignment, @@ -112,8 +118,11 @@ SAL_DLLPUBLIC void* SAL_CALL rtl_allocateAlignedMemory ( /** Free memory allocated with rtl_allocateAlignedMemory. + @param Ptr [in] pointer to previously allocated memory. @return none. Memory is released. Ptr is invalid. + + @since LibreOffice 4.3 */ SAL_DLLPUBLIC void SAL_CALL rtl_freeAlignedMemory ( void * Ptr diff --git a/sal/osl/unx/memory.c b/sal/osl/unx/memory.c index 2b6c20f47d1c..ca241b10d103 100644 --- a/sal/osl/unx/memory.c +++ b/sal/osl/unx/memory.c @@ -19,9 +19,16 @@ void* osl_aligned_alloc( sal_Size align, sal_Size size ) #ifdef __ANDROID__ return memalign(align, size); #else - void* ptr; - int err = posix_memalign(&ptr, align, size); - return err ? NULL : ptr; + if (size == 0) + { + return NULL; + } + else + { + void* ptr; + int err = posix_memalign(&ptr, align, size); + return err ? NULL : ptr; + } #endif } |