[Mplayerxp-cvslog] SF.net SVN: mplayerxp:[421] mplayerxp/osdep
Brought to you by:
olov
From: <nic...@us...> - 2012-11-21 12:54:49
|
Revision: 421 http://mplayerxp.svn.sourceforge.net/mplayerxp/?rev=421&view=rev Author: nickols_k Date: 2012-11-21 12:54:43 +0000 (Wed, 21 Nov 2012) Log Message: ----------- implement memaligned operator new Modified Paths: -------------- mplayerxp/osdep/mp_malloc.cpp mplayerxp/osdep/mplib.h Modified: mplayerxp/osdep/mp_malloc.cpp =================================================================== --- mplayerxp/osdep/mp_malloc.cpp 2012-11-21 09:34:59 UTC (rev 420) +++ mplayerxp/osdep/mp_malloc.cpp 2012-11-21 12:54:43 UTC (rev 421) @@ -542,6 +542,16 @@ return ptr; } -void SECURE_NAME2(_mp_free)(any_t* ptr) { +any_t* SECURE_NAME2(_mp_memalign)(size_t boundary,size_t size) { + any_t* ptr; + ptr = mp_memalign(boundary,size); + if(!ptr) { + std::bad_alloc ba; + throw ba; + } + return ptr; +} + +void SECURE_NAME3(_mp_free)(any_t* ptr) { mp_free(ptr); } Modified: mplayerxp/osdep/mplib.h =================================================================== --- mplayerxp/osdep/mplib.h 2012-11-21 09:34:59 UTC (rev 420) +++ mplayerxp/osdep/mplib.h 2012-11-21 12:54:43 UTC (rev 421) @@ -77,7 +77,8 @@ extern any_t* __FASTCALL__ SECURE_NAME0(_mp_malloc)(size_t size); extern any_t* __FASTCALL__ SECURE_NAME1(_mp_mallocz)(size_t size); -extern void __FASTCALL__ SECURE_NAME2(_mp_free)(any_t* ptr); +extern any_t* __FASTCALL__ SECURE_NAME2(_mp_memalign)(size_t boundary,size_t size); +extern void __FASTCALL__ SECURE_NAME3(_mp_free)(any_t* ptr); extern any_t* __FASTCALL__ SECURE_NAME9(rnd_fill)(any_t* buffer,size_t size); #ifdef __cplusplus } @@ -85,14 +86,17 @@ extern "C++" { #include <new> enum zeromemory_t{ zeromem=0 }; + enum alignedmemory_t{ alignmem=0 }; inline any_t *operator new(size_t size) { return SECURE_NAME0(_mp_malloc)(size); } inline any_t *operator new(size_t size,const zeromemory_t&) { return SECURE_NAME1(_mp_mallocz)(size); } + inline any_t *operator new(size_t size,const alignedmemory_t&,size_t boundary) { return SECURE_NAME2(_mp_memalign)(boundary,size); } inline any_t *operator new(size_t size,const std::nothrow_t&) { return mp_malloc(size); } inline any_t *operator new[](size_t size) { return SECURE_NAME0(_mp_malloc)(size); } inline any_t *operator new[](size_t size,const zeromemory_t&) { return SECURE_NAME1(_mp_mallocz)(size); } + inline any_t *operator new[](size_t size,const alignedmemory_t&,size_t boundary) { return SECURE_NAME2(_mp_memalign)(boundary,size); } inline any_t *operator new[](size_t size,const std::nothrow_t&) { return mp_malloc(size); } - inline void operator delete(any_t* p) { SECURE_NAME2(_mp_free)(p); } - inline void operator delete[](any_t* p) { SECURE_NAME2(_mp_free)(p); } + inline void operator delete(any_t* p) { SECURE_NAME3(_mp_free)(p); } + inline void operator delete[](any_t* p) { SECURE_NAME3(_mp_free)(p); } extern any_t* get_caller_address(unsigned num_caller=0); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |