From 6fb696211b93ced646f7bda09d8ffb5302e420c6 Mon Sep 17 00:00:00 2001 From: smf- Date: Mon, 29 Jan 2018 11:11:15 +0000 Subject: fix assertion when debugging in visual studio (nw) --- src/lib/netlist/plib/pstring.cpp | 36 ++++++++++++++++-------------------- 1 file changed, 16 insertions(+), 20 deletions(-) (limited to 'src/lib/netlist/plib/pstring.cpp') 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 int pstring_t::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(*si) - static_cast(*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(*si) - static_cast(*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 -- cgit v1.2.3-70-g09d2