diff options
author | 2018-01-29 11:11:15 +0000 | |
---|---|---|
committer | 2018-01-29 12:07:46 +0000 | |
commit | 6fb696211b93ced646f7bda09d8ffb5302e420c6 (patch) | |
tree | ab315984660c48f42eb70d75925aa894291512ed /src/lib/netlist/plib/pstring.cpp | |
parent | 134db45d9dd5d8015625290ba4228bda02cee4a3 (diff) |
fix assertion when debugging in visual studio (nw)
Diffstat (limited to 'src/lib/netlist/plib/pstring.cpp')
-rw-r--r-- | src/lib/netlist/plib/pstring.cpp | 36 |
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> |