Fixed a leak in Companion import: name can't be const char, it must store the string locally because some classes construct name dynamically.

This commit is contained in:
Damjan Adamic
2017-03-13 18:28:05 +01:00
parent c05ea013f6
commit 97734f2d9a
2 changed files with 8 additions and 8 deletions
+6 -6
View File
@@ -36,7 +36,7 @@ class DataField {
{
}
virtual const char * getName()
virtual const QString & getName()
{
return name;
}
@@ -93,9 +93,9 @@ class DataField {
int result = (offset+bits.count()) % 8;
for (int i=0; i<level; i++) printf(" ");
if (bits.count() % 8 == 0)
printf("%s (%dbytes) ", getName(), bytes.count());
printf("%s (%dbytes) ", getName().toLatin1().constData(), bytes.count());
else
printf("%s (%dbits) ", getName(), bits.count());
printf("%s (%dbits) ", getName().toLatin1().constData(), bits.count());
for (int i=0; i<bytes.count(); i++) {
unsigned char c = bytes[i];
if ((i==0 && offset) || (i==bytes.count()-1 && result!=0))
@@ -119,7 +119,7 @@ class DataField {
}
DataField * parent;
const char * name;
QString name;
};
class ProxyField: public DataField {
@@ -495,7 +495,7 @@ class StructField: public DataField {
virtual int Dump(int level=0, int offset=0)
{
for (int i=0; i<level; i++) printf(" ");
printf("%s (%d bytes)\n", getName(), size()/8);
printf("%s (%d bytes)\n", getName().toLatin1().constData(), size()/8);
foreach(DataField *field, fields) {
offset = field->Dump(level+1, offset);
}
@@ -532,7 +532,7 @@ class TransformedField: public DataField {
}
virtual const char * getName()
virtual const QString & getName()
{
return field.getName();
}
@@ -40,7 +40,7 @@ class OpenTxGeneralData: public TransformedField {
public:
OpenTxGeneralData(GeneralSettings & generalData, Board::Type board, unsigned int version, unsigned int variant=0);
virtual const char * getName() { return internalField.getName(); }
virtual const QString & getName() { return internalField.getName(); }
QStringList errors()
{
@@ -120,7 +120,7 @@ class OpenTxModelData: public TransformedField {
public:
OpenTxModelData(ModelData & modelData, Board::Type board, unsigned int version, unsigned int variant);
virtual const char * getName() { return internalField.getName(); }
virtual const QString & getName() { return internalField.getName(); }
QStringList errors()
{