aboutsummaryrefslogtreecommitdiffstats
path: root/vespamalloc/src
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2022-02-27 08:26:08 +0100
committerGitHub <noreply@github.com>2022-02-27 08:26:08 +0100
commit4f85165d0fdf0db76da002d41d0843205e35991e (patch)
treec06e4b34e81c4a7f722ab5912f52e019cb291250 /vespamalloc/src
parentad2b853487fc561fc7c72f495447464df7aaab2b (diff)
parentc72ede0ea57ffc81390b496d8461b66dde2c8eb0 (diff)
Merge pull request #21441 from vespa-engine/toregge/use-pointer-to-functions-to-hide-delete-from-compiler
Use pointers to functions to hide delete from compiler.
Diffstat (limited to 'vespamalloc/src')
-rw-r--r--vespamalloc/src/tests/doubledelete/doubledelete.cpp11
-rw-r--r--vespamalloc/src/tests/overwrite/overwrite.cpp11
2 files changed, 18 insertions, 4 deletions
diff --git a/vespamalloc/src/tests/doubledelete/doubledelete.cpp b/vespamalloc/src/tests/doubledelete/doubledelete.cpp
index bd04be2da5d..fd3eadddd69 100644
--- a/vespamalloc/src/tests/doubledelete/doubledelete.cpp
+++ b/vespamalloc/src/tests/doubledelete/doubledelete.cpp
@@ -3,12 +3,19 @@
void *savedptr;
+void delete_ptr_real(char *ptr)
+{
+ delete ptr;
+}
+
+void (*delete_ptr)(char *ptr) = delete_ptr_real;
+
int main(int argc, char *argv[])
{
(void) argc;
(void) argv;
char * a = new char;
savedptr = a;
- delete a;
- delete a;
+ delete_ptr(a);
+ delete_ptr(a);
}
diff --git a/vespamalloc/src/tests/overwrite/overwrite.cpp b/vespamalloc/src/tests/overwrite/overwrite.cpp
index 151207e95fa..aae5cccb696 100644
--- a/vespamalloc/src/tests/overwrite/overwrite.cpp
+++ b/vespamalloc/src/tests/overwrite/overwrite.cpp
@@ -17,6 +17,13 @@ void overwrite_memory_real(char *ptr, int offset)
void (*overwrite_memory)(char *ptr, int offset) = overwrite_memory_real;
+void delete_vec_real(char *ptr)
+{
+ delete [] ptr;
+}
+
+void (*delete_vec)(char *ptr) = delete_vec_real;
+
class Test : public TestApp
{
public:
@@ -43,7 +50,7 @@ void Test::testFillValue(char *a)
char *d = new char[256];
memset(d, 0x77, 256);
check_ptr(d);
- delete [] d;
+ delete_vec(d);
EXPECT_EQUAL((int)d[0], 0x66);
EXPECT_EQUAL((int)d[1], 0x66);
EXPECT_EQUAL((int)d[255], 0x66);
@@ -84,7 +91,7 @@ void Test::verifyWriteAfterFreeDetection()
// Make sure that enough blocks of memory is allocated and freed.
char * a = new char[256];
check_ptr(a);
- delete [] a;
+ delete_vec(a);
for (size_t i(0); i < 100; i++) {
char *d = new char[256];
check_ptr(d);