From 9d224968d299be6678eb5ae99d49c18d2a0c74e8 Mon Sep 17 00:00:00 2001 From: Nikola Petrov Date: Sun, 5 Jan 2025 00:43:03 +0100 Subject: [PATCH] changes for protection --- src/values/DnaManager.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/values/DnaManager.cpp b/src/values/DnaManager.cpp index 3ffbd14..b11ef28 100644 --- a/src/values/DnaManager.cpp +++ b/src/values/DnaManager.cpp @@ -144,7 +144,7 @@ void DnaManager::like(Unit unit) showed++; - if (showed == NUM_PER_GEN && queued == NUM_PER_GEN) + if (showed >= NUM_PER_GEN && queued >= NUM_PER_GEN) // if buffer was biger in the past showed could be more then NUM_PER_GEN so its changed to >= insted of == { newGen(); queued = 0; @@ -184,6 +184,9 @@ void DnaManager::newGen() { for (auto &&i : disliked) { + if (i >= NUM_PER_GEN) // out of bounds error prevention if buffer was in the past biiger then its now + continue; + size_t p1 = mrand::getValue(0, liked.size() - 1, &randSeed); size_t p2 = mrand::getValue(0, liked.size() - 1, &randSeed); while (p1 == p2) @@ -191,6 +194,9 @@ void DnaManager::newGen() p2 = mrand::getValue(0, liked.size(), &randSeed); } + if (p1 >= NUM_PER_GEN || p2 >= NUM_PER_GEN) // out of bounds error prevention if buffer was in the past biiger then its now + continue; + p1 = liked[p1]; p2 = liked[p2]; Dna *p1p = &vector[p1];