tests: New and delete operators now use test allocator and thus are subject to leak detection and memory threshold failure
git-svn-id: http://pugixml.googlecode.com/svn/trunk@624 99668b35-9821-0410-8761-19e4c4f06640
This commit is contained in:
parent
1b4123af9e
commit
724cb46a72
@ -1,6 +1,7 @@
|
|||||||
#include "test.hpp"
|
#include "test.hpp"
|
||||||
#include "allocator.hpp"
|
#include "allocator.hpp"
|
||||||
|
|
||||||
|
#include <new>
|
||||||
#include <exception>
|
#include <exception>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <float.h>
|
#include <float.h>
|
||||||
@ -51,6 +52,60 @@ static void replace_memory_management()
|
|||||||
pugi::set_memory_management_functions(custom_allocate, custom_deallocate);
|
pugi::set_memory_management_functions(custom_allocate, custom_deallocate);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef __GNUC__
|
||||||
|
#define DECL_THROW(e) throw(e)
|
||||||
|
#define DECL_NOTHROW() throw()
|
||||||
|
#else
|
||||||
|
#define DECL_THROW(e)
|
||||||
|
#define DECL_NOTHROW()
|
||||||
|
#endif
|
||||||
|
|
||||||
|
void* operator new(size_t size) DECL_THROW(std::bad_alloc)
|
||||||
|
{
|
||||||
|
void* result = custom_allocate(size);
|
||||||
|
|
||||||
|
#ifndef PUGIXML_NO_EXCEPTIONS
|
||||||
|
if (!result) throw std::bad_alloc();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
void* operator new[](size_t size) DECL_THROW(std::bad_alloc)
|
||||||
|
{
|
||||||
|
return operator new(size);
|
||||||
|
}
|
||||||
|
|
||||||
|
void* operator new(size_t size, const std::nothrow_t&) throw()
|
||||||
|
{
|
||||||
|
return custom_allocate(size);
|
||||||
|
}
|
||||||
|
|
||||||
|
void* operator new[](size_t size, const std::nothrow_t&) throw()
|
||||||
|
{
|
||||||
|
return custom_allocate(size);
|
||||||
|
}
|
||||||
|
|
||||||
|
void operator delete(void* ptr) DECL_NOTHROW()
|
||||||
|
{
|
||||||
|
custom_deallocate(ptr);
|
||||||
|
}
|
||||||
|
|
||||||
|
void operator delete[](void* ptr) DECL_NOTHROW()
|
||||||
|
{
|
||||||
|
custom_deallocate(ptr);
|
||||||
|
}
|
||||||
|
|
||||||
|
void operator delete(void* ptr, const std::nothrow_t&) throw()
|
||||||
|
{
|
||||||
|
custom_deallocate(ptr);
|
||||||
|
}
|
||||||
|
|
||||||
|
void operator delete[](void* ptr, const std::nothrow_t&) throw()
|
||||||
|
{
|
||||||
|
custom_deallocate(ptr);
|
||||||
|
}
|
||||||
|
|
||||||
#if defined(_MSC_VER) && _MSC_VER > 1200 && _MSC_VER < 1400 && !defined(__INTEL_COMPILER) && !defined(__DMC__)
|
#if defined(_MSC_VER) && _MSC_VER > 1200 && _MSC_VER < 1400 && !defined(__INTEL_COMPILER) && !defined(__DMC__)
|
||||||
namespace std
|
namespace std
|
||||||
{
|
{
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user