summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGuillem Jover <guillem@debian.org>2016-09-07 04:39:14 +0200
committerGuillem Jover <guillem@debian.org>2016-10-30 06:29:50 +0100
commit1fc6530294334e421c0da3652181eedd2669433e (patch)
tree050472903c0e33d47a1d59d2a004f5becc9361f6
parent2ca60a4d810dac811613e2c17bb0c28fc523dad4 (diff)
downloaddpkg-1fc6530294334e421c0da3652181eedd2669433e.tar.gz
dselect: Add replacement new and delete array operators
-rw-r--r--debian/changelog1
-rw-r--r--dselect/cxx-support.cc23
2 files changed, 24 insertions, 0 deletions
diff --git a/debian/changelog b/debian/changelog
index 80b2582a7..7c5edfb0f 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -41,6 +41,7 @@ dpkg (1.18.11) UNRELEASED; urgency=medium
* Fix free() on uninitialized pointer in error_context_errmsg_format() in
libdpkg. Regression introduced in dpkg 1.18.7. Closes: #842004
* Move C++ support code into its own file.
+ * Add replacement new and delete array operators to C++ support code.
* Architecture support:
- Add support for AIX operating system.
* Portability:
diff --git a/dselect/cxx-support.cc b/dselect/cxx-support.cc
index 235a4a761..d850ed591 100644
--- a/dselect/cxx-support.cc
+++ b/dselect/cxx-support.cc
@@ -40,6 +40,17 @@ operator new(size_t size) DPKG_ATTR_THROW(std::bad_alloc)
return p;
}
+extern void *
+operator new[](size_t size) DPKG_ATTR_THROW(std::bad_alloc)
+{
+ void *p;
+
+ p = m_malloc(size);
+ assert(p);
+
+ return p;
+}
+
extern void
operator delete(void *p) DPKG_ATTR_NOEXCEPT
{
@@ -51,3 +62,15 @@ operator delete(void *p, size_t size) DPKG_ATTR_NOEXCEPT
{
free(p);
}
+
+extern void
+operator delete[](void *a) DPKG_ATTR_NOEXCEPT
+{
+ free(a);
+}
+
+extern void
+operator delete[](void *a, size_t size) DPKG_ATTR_NOEXCEPT
+{
+ free(a);
+}