summaryrefslogtreecommitdiffstatshomepage
path: root/src/lib/netlist/plib
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/netlist/plib')
-rw-r--r--src/lib/netlist/plib/palloc.cpp8
-rw-r--r--src/lib/netlist/plib/palloc.h24
-rw-r--r--src/lib/netlist/plib/plists.h1
-rw-r--r--src/lib/netlist/plib/pparser.cpp1
-rw-r--r--src/lib/netlist/plib/pstate.cpp1
-rw-r--r--src/lib/netlist/plib/pstream.h1
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 {