diff options
author | Tom Sepez <tsepez@chromium.org> | 2015-04-14 12:54:38 -0700 |
---|---|---|
committer | Tom Sepez <tsepez@chromium.org> | 2015-04-14 12:54:38 -0700 |
commit | 4926900ab54a493d236291b5a24dfa4476792182 (patch) | |
tree | e53800a0569300516c934bfccbb036ce39d98cb3 /core/include/fxcrt/fx_memory.h | |
parent | eddab4425614e49146f904f00da4a664ba4b581b (diff) | |
download | pdfium-4926900ab54a493d236291b5a24dfa4476792182.tar.xz |
Kill CFX_Object.
CFX_Object is a type that implements its own new operators that return
NULL on error. There's no need for this given the |new (std::nothrow)|
syntax; in fact, the current code can only work if there is no activity
in the constructors. This may explain the pervasive lack of
constructors and reliance on Init() methods throughout the codebase.
The activity takes place in fx_memory.h, where FX_NEW is mapped onto
the std::nothrow syntax. The rest is just cleanup.
Down the road, we will simply throw and remove all the error-checking
paths for new objects. Landing this patch first will at least show a
simple path back to the old behaviour without having to re-introduce
CFX_Object should someone want to do so in their own fork.
R=thestig@chromium.org
Review URL: https://codereview.chromium.org/1088733002
Diffstat (limited to 'core/include/fxcrt/fx_memory.h')
-rw-r--r-- | core/include/fxcrt/fx_memory.h | 71 |
1 files changed, 7 insertions, 64 deletions
diff --git a/core/include/fxcrt/fx_memory.h b/core/include/fxcrt/fx_memory.h index 15dc7da8cf..7884d6b11d 100644 --- a/core/include/fxcrt/fx_memory.h +++ b/core/include/fxcrt/fx_memory.h @@ -10,6 +10,7 @@ #include "fx_system.h" #ifdef __cplusplus +#include <new> extern "C" { #endif #define FX_Alloc(type, size) (type*)calloc(size, sizeof(type)) @@ -22,76 +23,18 @@ void* FXMEM_DefaultRealloc(void* pointer, size_t new_size, int flags); void FXMEM_DefaultFree(void* pointer, int flags); #ifdef __cplusplus } -#endif -#ifdef __cplusplus -class CFX_Object -{ -public: - void* operator new (size_t size, FX_LPCSTR file, int line) - { - return malloc(size); - } - void operator delete (void* p, FX_LPCSTR file, int line) - { - free(p); - } - void* operator new (size_t size) - { - return malloc(size); - } - void operator delete (void* p) - { - free(p); - } - void* operator new[] (size_t size, FX_LPCSTR file, int line) - { - return malloc(size); - } - void operator delete[] (void* p, FX_LPCSTR file, int line) - { - free(p); - } - void* operator new[] (size_t size) - { - return malloc(size); - } - void operator delete[] (void* p) - { - free(p); - } - void* operator new (size_t, void* buf) - { - return buf; - } - void operator delete (void*, void*) {} -}; -#endif -#ifdef __cplusplus -#if defined(_DEBUG) -#define FX_NEW new(__FILE__, __LINE__) -#else -#define FX_NEW new -#endif -#define FX_NEW_VECTOR(Pointer, Class, Count) \ - { \ - Pointer = FX_Alloc(Class, Count); \ - if (Pointer) { \ - for (int i = 0; i < (Count); i ++) new (Pointer + i) Class; \ - } \ - } -#define FX_DELETE_VECTOR(Pointer, Class, Count) \ - { \ - for (int i = 0; i < (Count); i ++) Pointer[i].~Class(); \ - FX_Free(Pointer); \ - } -class CFX_DestructObject : public CFX_Object +#define FX_NEW new(std::nothrow) +#define FX_NEW_VECTOR(Pointer, Class, Count) (Pointer = FX_NEW Class[Count]) +#define FX_DELETE_VECTOR(Pointer, Class, Count) delete[] Pointer + +class CFX_DestructObject { public: virtual ~CFX_DestructObject() {} }; -class CFX_GrowOnlyPool : public CFX_Object +class CFX_GrowOnlyPool { public: |