X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=gui%2Fsaverthread.cpp;h=4ad83c5876c5caf1267d80cc8c8029bdc18b7c93;hb=3801952b80cd7a7160f6410518f6e3740d461b60;hp=7e7c471d3067cdb07512af7fb7201ee8386f8d83;hpb=48412ffde3dd4710c96d5e8d9cfdf1789e4d703a;p=apitrace diff --git a/gui/saverthread.cpp b/gui/saverthread.cpp index 7e7c471..4ad83c5 100644 --- a/gui/saverthread.cpp +++ b/gui/saverthread.cpp @@ -189,11 +189,7 @@ writeValue(trace::Writer &writer, const QVariant &var, unsigned &id) deleteStructSig(str); } else if (type == pointerType) { ApiPointer apiPtr = var.value(); - //writer.beginArray(1); - //writer.beginElement(); - writer.writeOpaque((const void*)apiPtr.value()); - //writer.endElement(); - //writer.endArray(); + writer.writePointer(apiPtr.value()); } else if (type == enumType) { ApiEnum apiEnum = var.value(); trace::EnumSig *sig = createEnumSig(apiEnum, ++id); @@ -251,7 +247,10 @@ public: virtual void visit(trace::String *node) { QString str = m_variant.toString(); - m_editedValue = new trace::String(str.toLocal8Bit().constData()); + char *newString = new char[str.length() + 1]; + QByteArray ba = str.toLocal8Bit(); + strcpy(newString, ba.constData()); + m_editedValue = new trace::String(newString); } virtual void visit(trace::Enum *e) @@ -277,7 +276,6 @@ public: trace::Array *newArray = new trace::Array(vals.count()); for (int i = 0; i < vals.count(); ++i) { EditVisitor visitor(vals[i]); - array->values[i]->visit(visitor); if (array->values[i] == visitor.value()) { //non-editabled @@ -286,7 +284,7 @@ public: return; } - newArray->values.push_back(visitor.value()); + newArray->values[i] = visitor.value(); } m_editedValue = newArray; } @@ -314,12 +312,12 @@ static void overwriteValue(trace::Call *call, const QVariant &val, int index) { EditVisitor visitor(val); - trace::Value *origValue = call->args[index]; + trace::Value *origValue = call->args[index].value; origValue->visit(visitor); if (visitor.value() && origValue != visitor.value()) { delete origValue; - call->args[index] = visitor.value(); + call->args[index].value = visitor.value(); } }