diff options
Diffstat (limited to 'src/lib/netlist/plib')
-rw-r--r-- | src/lib/netlist/plib/palloc.cpp | 8 | ||||
-rw-r--r-- | src/lib/netlist/plib/palloc.h | 24 | ||||
-rw-r--r-- | src/lib/netlist/plib/plists.h | 1 | ||||
-rw-r--r-- | src/lib/netlist/plib/pparser.cpp | 1 | ||||
-rw-r--r-- | src/lib/netlist/plib/pstate.cpp | 1 | ||||
-rw-r--r-- | src/lib/netlist/plib/pstream.h | 1 |
6 files changed, 17 insertions, 19 deletions
diff --git a/src/lib/netlist/plib/palloc.cpp b/src/lib/netlist/plib/palloc.cpp index c89c2ed7e63..be987b5014b 100644 --- a/src/lib/netlist/plib/palloc.cpp +++ b/src/lib/netlist/plib/palloc.cpp @@ -64,7 +64,9 @@ mempool::~mempool() for (auto & b : m_blocks) { if (b.m_num_alloc != 0) - fprintf(stderr, "Found block with dangling allocations\n"); + { + fprintf(stderr, "Found block with %d dangling allocations\n", (int) b.m_num_alloc); + } delete b.data; } m_blocks.clear(); @@ -122,8 +124,8 @@ void mempool::free(void *ptr) fprintf(stderr, "Argh .. double free\n"); else { - b->m_free = m_min_alloc; - b->cur_ptr = b->data; + //b->m_free = m_min_alloc; + //b->cur_ptr = b->data; } b->m_num_alloc--; } diff --git a/src/lib/netlist/plib/palloc.h b/src/lib/netlist/plib/palloc.h index fb467fbe173..088320fa7e3 100644 --- a/src/lib/netlist/plib/palloc.h +++ b/src/lib/netlist/plib/palloc.h @@ -117,14 +117,19 @@ public: { } owned_ptr(const owned_ptr &r) = delete; owned_ptr & operator =(owned_ptr &r) = delete; - owned_ptr & operator =(owned_ptr &&r) + + template<typename DC> + owned_ptr & operator =(owned_ptr<DC> &&r) { + if (m_is_owned && (m_ptr != nullptr)) + delete m_ptr; m_is_owned = r.m_is_owned; m_ptr = r.m_ptr; r.m_is_owned = false; r.m_ptr = nullptr; return *this; } + owned_ptr(owned_ptr &&r) { m_is_owned = r.m_is_owned; @@ -143,7 +148,7 @@ public: ~owned_ptr() { - if (m_is_owned && m_ptr != nullptr) + if (m_is_owned && (m_ptr != nullptr)) delete m_ptr; m_is_owned = false; m_ptr = nullptr; @@ -164,25 +169,16 @@ public: a.m_ptr = new SC(std::forward<Args>(args)...); return std::move(a); } - void release() + SC * release() { + SC *tmp = m_ptr; m_is_owned = false; m_ptr = nullptr; + return tmp; } bool is_owned() const { return m_is_owned; } -#if 1 - template<typename DC> - owned_ptr & operator =(owned_ptr<DC> &&r) - { - m_is_owned = r.m_is_owned; - m_ptr = r.m_ptr; - r.m_is_owned = false; - r.m_ptr = nullptr; - return *this; - } -#endif SC * operator ->() const { return m_ptr; } SC & operator *() const { return *m_ptr; } SC * get() const { return m_ptr; } diff --git a/src/lib/netlist/plib/plists.h b/src/lib/netlist/plib/plists.h index 16cb2f9e686..0bb83750874 100644 --- a/src/lib/netlist/plib/plists.h +++ b/src/lib/netlist/plib/plists.h @@ -15,7 +15,6 @@ #include <type_traits> #include <cmath> -#include "palloc.h" #include "pstring.h" namespace plib { diff --git a/src/lib/netlist/plib/pparser.cpp b/src/lib/netlist/plib/pparser.cpp index be52b27dc30..4f41c73d6f8 100644 --- a/src/lib/netlist/plib/pparser.cpp +++ b/src/lib/netlist/plib/pparser.cpp @@ -8,6 +8,7 @@ #include <cstdarg> #include "pparser.h" +#include "plib/palloc.h" namespace plib { // ---------------------------------------------------------------------------------------- diff --git a/src/lib/netlist/plib/pstate.cpp b/src/lib/netlist/plib/pstate.cpp index 61535acac09..ddfe0a37bc8 100644 --- a/src/lib/netlist/plib/pstate.cpp +++ b/src/lib/netlist/plib/pstate.cpp @@ -6,6 +6,7 @@ */ #include "pstate.h" +#include "palloc.h" namespace plib { state_manager_t::state_manager_t() diff --git a/src/lib/netlist/plib/pstream.h b/src/lib/netlist/plib/pstream.h index 68ab55ca58b..20aaab83a3a 100644 --- a/src/lib/netlist/plib/pstream.h +++ b/src/lib/netlist/plib/pstream.h @@ -12,7 +12,6 @@ #include "pconfig.h" #include "pstring.h" -#include "palloc.h" #include "pfmtlog.h" namespace plib { |