瀏覽代碼

dselect: Add replacement new and delete array operators

Guillem Jover 9 年之前
父節點
當前提交
1fc6530294
共有 2 個文件被更改,包括 24 次插入0 次删除
  1. 1 0
      debian/changelog
  2. 23 0
      dselect/cxx-support.cc

+ 1 - 0
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:

+ 23 - 0
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);
+}