diff options
author | Greg Zharun <grygoriiz@wavesglobal.com> | 2015-04-09 13:27:57 +0300 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2015-06-29 14:16:43 -0400 |
commit | 92e4f227deb5a340dad0c4dbbec5ad52d44fa391 (patch) | |
tree | 1736736c1f1667b20dcb784a1711c9eaa7bac7db /libs/pbd/malign.cc | |
parent | 24c531a9a64199645783605a1e0b322b6bba095a (diff) |
[Summary] Added correct memory alignment for Windows in ../pbd/malign.h
[Reviewed by] YPozdnyakov
Diffstat (limited to 'libs/pbd/malign.cc')
-rw-r--r-- | libs/pbd/malign.cc | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/libs/pbd/malign.cc b/libs/pbd/malign.cc index a11a23f35f..a5f966c0c5 100644 --- a/libs/pbd/malign.cc +++ b/libs/pbd/malign.cc @@ -38,6 +38,15 @@ static const int CPU_CACHE_ALIGN = 16; /* arguably 32 on most arches, but it mat int cache_aligned_malloc (void** memptr, size_t size) { #ifndef HAVE_POSIX_MEMALIGN +#ifdef PLATFORM_WINDOWS + if (((*memptr) = _aligned_malloc (size, CPU_CACHE_ALIGN)) == 0) { + fatal << string_compose (_("Memory allocation error: malloc (%1 * %2) failed (%3)"), + CPU_CACHE_ALIGN, size, strerror (errno)) << endmsg; + return errno; + } else { + return 0; + } +#else if (((*memptr) = malloc (size)) == 0) { fatal << string_compose (_("Memory allocation error: malloc (%1 * %2) failed (%3)"), CPU_CACHE_ALIGN, size, strerror (errno)) << endmsg; @@ -45,6 +54,7 @@ int cache_aligned_malloc (void** memptr, size_t size) } else { return 0; } +#endif #else if (posix_memalign (memptr, CPU_CACHE_ALIGN, size)) { fatal << string_compose (_("Memory allocation error: posix_memalign (%1 * %2) failed (%3)"), @@ -54,3 +64,12 @@ int cache_aligned_malloc (void** memptr, size_t size) return 0; #endif } + +void cache_aligned_free (void* memptr) +{ +#ifdef PLATFORM_WINDOWS + _aligned_free (memptr); +#else + free (memptr); +#endif +}
\ No newline at end of file |