16
0
mirror of https://github.com/MaSzyna-EU07/maszyna.git synced 2026-07-19 16:59:17 +02:00

minor refactoring and diagnostics enhancements, fixed some memory leaks, radiostop test command

This commit is contained in:
tmj-fstate
2017-08-30 19:54:43 +02:00
parent decbcd8055
commit e5980f946c
27 changed files with 1584 additions and 1617 deletions

View File

@@ -78,7 +78,7 @@ void TEvent::Conditions(cParser *parser, std::string s)
if (!asNodeName.empty())
{ // podczepienie łańcucha, jeśli nie jest pusty
// BUG: source of a memory leak -- the array never gets deleted. fix the destructor
Params[9].asText = new char[asNodeName.length() + 1]; // usuwane i zamieniane na
Params[9].asText = new char[asNodeName.size() + 1]; // usuwane i zamieniane na
// wskaźnik
strcpy(Params[9].asText, asNodeName.c_str());
}
@@ -103,7 +103,7 @@ void TEvent::Conditions(cParser *parser, std::string s)
str = token;
if (str != "*") //"*" - nie brac command pod uwage
{ // zapamiętanie łańcucha do porównania
Params[10].asText = new char[255];
Params[10].asText = new char[str.size() + 1];
strcpy(Params[10].asText, str.c_str());
iFlags |= conditional_memstring;
}
@@ -144,7 +144,6 @@ void TEvent::Load(cParser *parser, vector3 *org)
int ti;
std::string token;
//string str;
char *ptr;
bEnabled = true; // zmieniane na false dla eventów używanych do skanowania sygnałów
@@ -222,14 +221,12 @@ void TEvent::Load(cParser *parser, vector3 *org)
// if (Type==tp_UpdateValues) iFlags=0; //co modyfikować
parser->getTokens(1, false); // case sensitive
*parser >> token;
// str = AnsiString(token.c_str());
Params[0].asText = new char[token.length() + 1]; // BUG: source of memory leak
Params[0].asText = new char[token.size() + 1]; // BUG: source of memory leak
strcpy(Params[0].asText, token.c_str());
if (token != "*") // czy ma zostać bez zmian?
iFlags |= update_memstring;
parser->getTokens();
*parser >> token;
// str = AnsiString(token.c_str());
if (token != "*") // czy ma zostać bez zmian?
{
Params[1].asdouble = atof(token.c_str());
@@ -239,7 +236,6 @@ void TEvent::Load(cParser *parser, vector3 *org)
Params[1].asdouble = 0;
parser->getTokens();
*parser >> token;
// str = AnsiString(token.c_str());
if (token != "*") // czy ma zostać bez zmian?
{
Params[2].asdouble = atof(token.c_str());
@@ -262,7 +258,7 @@ void TEvent::Load(cParser *parser, vector3 *org)
switch (++i)
{ // znaczenie kolejnych parametrów
case 1: // nazwa drugiej komórki (źródłowej)
Params[9].asText = new char[token.length() + 1]; // usuwane i zamieniane na wskaźnik
Params[9].asText = new char[token.size() + 1]; // usuwane i zamieniane na wskaźnik
strcpy(Params[9].asText, token.c_str());
break;
case 2: // maska wartości
@@ -353,7 +349,7 @@ void TEvent::Load(cParser *parser, vector3 *org)
}
else
Params[6].asCommand = cm_Unknown;
Params[0].asText = new char[token.length() + 1];
Params[0].asText = new char[token.size() + 1];
strcpy(Params[0].asText, token.c_str());
parser->getTokens();
*parser >> token;
@@ -561,7 +557,7 @@ void TEvent::Load(cParser *parser, vector3 *org)
{ // eventy rozpoczynające się od "none_" są ignorowane
if (token != "else")
{
Params[i].asText = new char[255];
Params[i].asText = new char[token.size() + 1];
strcpy(Params[i].asText, token.c_str());
if (ti)
iFlags |= conditional_else << i; // oflagowanie dla eventów "else"