From d27c3eb1f7f61dbfd1ac7b1286b8e9e8b8ee5a32 Mon Sep 17 00:00:00 2001 From: Jonny007-MKD <1-23-4-5@web.de> Date: Tue, 7 Jan 2014 20:29:13 +0100 Subject: [PATCH] Bug fix: Adjust size of GrayToBinary-Table MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Wenn wir z.B. eine Tabelle mit 4 Variablen = 16 Elementen anlegen, und anschließend eine Datei mit mehr als 4 Variablen bearbeiten, müssen wir die Tabelle vergrößern --- Hazard/Hazard/Tools.cpp | 10 +++++++++- Hazard/Hazard/Tools.h | 1 + 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/Hazard/Hazard/Tools.cpp b/Hazard/Hazard/Tools.cpp index 919b47c..91181ee 100644 --- a/Hazard/Hazard/Tools.cpp +++ b/Hazard/Hazard/Tools.cpp @@ -6,6 +6,7 @@ using namespace std; extern uint numElements; uint* Tools::GrayToBinaryTable = NULL; +uint Tools::GrayToBinaryTableSize = 0; // convert the binary representation of x to a string with the specified length char* Tools::BinaryToChars(uint x, char length) @@ -26,14 +27,21 @@ char* Tools::BinaryToChars(uint x, char length) uint Tools::GrayToBinary(uint x) { - if (Tools::GrayToBinaryTable == NULL) + if (Tools::GrayToBinaryTableSize < numElements && Tools::GrayToBinaryTable != NULL) + { + delete[] Tools::GrayToBinaryTable; Tools::InitGrayToBinaryTable(); + } + else if (Tools::GrayToBinaryTable == NULL) + Tools::InitGrayToBinaryTable(); + return Tools::GrayToBinaryTable[x]; } void Tools::InitGrayToBinaryTable() { Tools::GrayToBinaryTable = new uint[numElements]; + Tools::GrayToBinaryTableSize = numElements; for (uint i = 0; i < numElements; i++) Tools::GrayToBinaryTable[i] = Tools::CalcGrayToBinary(i); } diff --git a/Hazard/Hazard/Tools.h b/Hazard/Hazard/Tools.h index e084739..6ba2889 100644 --- a/Hazard/Hazard/Tools.h +++ b/Hazard/Hazard/Tools.h @@ -9,5 +9,6 @@ public: private: static void InitGrayToBinaryTable(); static uint* GrayToBinaryTable; + static uint GrayToBinaryTableSize; static uint Tools::CalcGrayToBinary(uint x); }; \ No newline at end of file