summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author smf- <smf-@users.noreply.github.com>2018-01-29 11:11:15 +0000
committer smf- <smf-@users.noreply.github.com>2018-01-29 12:07:46 +0000
commit6fb696211b93ced646f7bda09d8ffb5302e420c6 (patch)
treeab315984660c48f42eb70d75925aa894291512ed
parent134db45d9dd5d8015625290ba4228bda02cee4a3 (diff)
fix assertion when debugging in visual studio (nw)
-rw-r--r--src/lib/netlist/plib/pstring.cpp36
1 files changed, 16 insertions, 20 deletions
diff --git a/src/lib/netlist/plib/pstring.cpp b/src/lib/netlist/plib/pstring.cpp
index 554baac9bc7..47d35d7c82f 100644
--- a/src/lib/netlist/plib/pstring.cpp
+++ b/src/lib/netlist/plib/pstring.cpp
@@ -25,32 +25,28 @@ std::size_t strlen_mem(const T *s)
template<typename F>
int pstring_t<F>::compare(const pstring_t &right) const
{
- std::size_t l = std::min(mem_t_size(), right.mem_t_size());
- if (l == 0)
- {
- if (mem_t_size() == 0 && right.mem_t_size() == 0)
- return 0;
- else if (right.mem_t_size() == 0)
- return 1;
- else
- return -1;
- }
+ if (mem_t_size() == 0 && right.mem_t_size() == 0)
+ return 0;
+ else if (right.mem_t_size() == 0)
+ return 1;
+ else if (mem_t_size() == 0)
+ return -1;
+
auto si = this->begin();
auto ri = right.begin();
- while (si != this->end() && *si == *ri)
+ while (si != this->end() && ri != right.end() && *si == *ri)
{
ri++;
si++;
}
- int ret = (si == this->end() ? 0 : static_cast<int>(*si) - static_cast<int>(*ri));
- if (ret == 0)
- {
- if (this->mem_t_size() > right.mem_t_size())
- ret = 1;
- else if (this->mem_t_size() < right.mem_t_size())
- ret = -1;
- }
- return ret;
+
+ if (si != this->end() && ri != right.end())
+ return static_cast<int>(*si) - static_cast<int>(*ri);
+ else if (this->mem_t_size() > right.mem_t_size())
+ return 1;
+ else if (this->mem_t_size() < right.mem_t_size())
+ return -1;
+ return 0;
}
template<typename F>