summaryrefslogtreecommitdiff
path: root/core/include/fxcrt/fx_memory.h
diff options
context:
space:
mode:
authorTom Sepez <tsepez@chromium.org>2015-04-14 12:54:38 -0700
committerTom Sepez <tsepez@chromium.org>2015-04-14 12:54:38 -0700
commit4926900ab54a493d236291b5a24dfa4476792182 (patch)
treee53800a0569300516c934bfccbb036ce39d98cb3 /core/include/fxcrt/fx_memory.h
parenteddab4425614e49146f904f00da4a664ba4b581b (diff)
downloadpdfium-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.h71
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: