From bab0b71a9a170a7f7da8d622d09c54f53d6e2062 Mon Sep 17 00:00:00 2001
From: Kai Bleeke <bleeke@ibr.cs.tu-bs.de>
Date: Tue, 10 Mar 2020 15:20:12 +0100
Subject: [PATCH] I write one file of C++ code and of course I forgot to free
 my memory

---
 blockchain-sys/src/bindings.rs | 3 +++
 libblockchain/src/lib.cpp      | 4 ++++
 libblockchain/src/lib.h        | 2 ++
 program/src/main.rs            | 1 +
 4 files changed, 10 insertions(+)

diff --git a/blockchain-sys/src/bindings.rs b/blockchain-sys/src/bindings.rs
index 454d6b9..b6a150d 100644
--- a/blockchain-sys/src/bindings.rs
+++ b/blockchain-sys/src/bindings.rs
@@ -55,3 +55,6 @@ extern "C" {
 extern "C" {
     pub fn libbc_blockchain_print(bc: *mut LibBcBlockchain);
 }
+extern "C" {
+    pub fn libbc_delete_blockchain(bc: *mut LibBcBlockchain);
+}
diff --git a/libblockchain/src/lib.cpp b/libblockchain/src/lib.cpp
index c1d2b5d..60b5937 100644
--- a/libblockchain/src/lib.cpp
+++ b/libblockchain/src/lib.cpp
@@ -38,4 +38,8 @@ void libbc_blockchain_add(LibBcBlockchain *bc, uint64_t id, struct LibBcPayload
 
 void libbc_blockchain_print(LibBcBlockchain *bc) {
     bc->print();
+}
+
+void libbc_delete_blockchain(LibBcBlockchain *bc) {
+    delete bc;
 }
\ No newline at end of file
diff --git a/libblockchain/src/lib.h b/libblockchain/src/lib.h
index ff839d1..35a2b9d 100644
--- a/libblockchain/src/lib.h
+++ b/libblockchain/src/lib.h
@@ -33,6 +33,8 @@ extern "C"
     void libbc_blockchain_add(LibBcBlockchain *bc, uint64_t id, struct LibBcPayload payload);
     void libbc_blockchain_print(LibBcBlockchain *bc);
 
+    void libbc_delete_blockchain(LibBcBlockchain *bc);
+
 #ifdef __cplusplus
 }
 #endif
\ No newline at end of file
diff --git a/program/src/main.rs b/program/src/main.rs
index 313abb1..d0f25a4 100644
--- a/program/src/main.rs
+++ b/program/src/main.rs
@@ -38,5 +38,6 @@ fn main() {
 
     unsafe {
         blockchain_sys::libbc_blockchain_print(blockchain.inner);
+        blockchain_sys::libbc_delete_blockchain(blockchain.inner);
     }
 }
-- 
GitLab