aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWalt Mankowski <waltman@pobox.com>2020-08-20 20:53:47 -0400
committerWalt Mankowski <waltman@pobox.com>2020-08-20 20:53:47 -0400
commit13cdfa88e53569f70d9094b2d858490224a6cb25 (patch)
tree817017845fa4c69a16a6256648fee69d9ec08b16
parent58a0d9119903d53470dce47142017d76aedb5e5e (diff)
downloadperlweeklychallenge-club-13cdfa88e53569f70d9094b2d858490224a6cb25.tar.gz
perlweeklychallenge-club-13cdfa88e53569f70d9094b2d858490224a6cb25.tar.bz2
perlweeklychallenge-club-13cdfa88e53569f70d9094b2d858490224a6cb25.zip
check for double-delete when removing c from nr
After it's been removed, set the value in seen to end() so we know not to erase it again.
-rw-r--r--challenge-074/walt-mankowski/cpp/ch-2.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/challenge-074/walt-mankowski/cpp/ch-2.cpp b/challenge-074/walt-mankowski/cpp/ch-2.cpp
index 01fb9a916b..b5f32cc7a4 100644
--- a/challenge-074/walt-mankowski/cpp/ch-2.cpp
+++ b/challenge-074/walt-mankowski/cpp/ch-2.cpp
@@ -20,9 +20,13 @@ int main(int argc, char *argv[]) {
if (seen.find(c) == seen.end()) {
nr.push_front(c);
seen[c] = nr.cbegin();
- } else
+ } else {
// remove c from nr
- nr.erase(seen[c]);
+ if (seen[c] != nr.end()) {
+ nr.erase(seen[c]);
+ seen[c] = nr.end();
+ }
+ }
// now the FNR is either the last element of nr, or #
if (nr.empty())