Skip to content

Commit 518a421

Browse files
committed
Add support for no-fail library allocator attribute to the GUI
1 parent 9f6f7bc commit 518a421

File tree

4 files changed

+11
-0
lines changed

4 files changed

+11
-0
lines changed

gui/cppchecklibrarydata.cpp

+3
Original file line numberDiff line numberDiff line change
@@ -272,6 +272,7 @@ static CppcheckLibraryData::MemoryResource loadMemoryResource(QXmlStreamReader &
272272
if (elementName == "alloc" || elementName == "realloc") {
273273
CppcheckLibraryData::MemoryResource::Alloc alloc;
274274
alloc.isRealloc = (elementName == "realloc");
275+
alloc.noFail = (xmlReader.attributes().value("no-fail").toString() == "true");
275276
alloc.init = (xmlReader.attributes().value("init").toString() == "true");
276277
if (xmlReader.attributes().hasAttribute("arg")) {
277278
alloc.arg = xmlReader.attributes().value("arg").toInt();
@@ -723,6 +724,8 @@ static void writeMemoryResource(QXmlStreamWriter &xmlWriter, const CppcheckLibra
723724
xmlWriter.writeStartElement("alloc");
724725
}
725726
xmlWriter.writeAttribute("init", bool_to_string(alloc.init));
727+
if (alloc.noFail)
728+
xmlWriter.writeAttribute("no-fail", bool_to_string(alloc.noFail));
726729
if (alloc.arg != -1) {
727730
xmlWriter.writeAttribute("arg", QString("%1").arg(alloc.arg));
728731
}

gui/cppchecklibrarydata.h

+1
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,7 @@ class CppcheckLibraryData {
142142
struct Alloc {
143143
bool isRealloc{};
144144
bool init{};
145+
bool noFail{};
145146
int arg = -1; // -1: Has no optional "realloc-arg" attribute
146147
int reallocArg = -1; // -1: Has no optional "arg" attribute
147148
QString bufferSize;

gui/test/cppchecklibrarydata/files/memory_resource_valid.cfg

+1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
<memory>
44
<alloc init="false" buffer-size="malloc">malloc</alloc>
55
<alloc init="true" buffer-size="calloc">calloc</alloc>
6+
<alloc init="false" no-fail="true" buffer-size="malloc">g_malloc</alloc>
67
<realloc init="false" buffer-size="malloc:2">realloc</realloc>
78
<alloc arg="2">UuidToString</alloc>
89
<dealloc arg="3">HeapFree</dealloc>

gui/test/cppchecklibrarydata/testcppchecklibrarydata.cpp

+6
Original file line numberDiff line numberDiff line change
@@ -292,27 +292,31 @@ void TestCppcheckLibraryData::memoryResourceValid()
292292
QCOMPARE(libraryData.memoryresource[0].alloc[0].bufferSize, QString("malloc"));
293293
QCOMPARE(libraryData.memoryresource[0].alloc[0].isRealloc, false);
294294
QCOMPARE(libraryData.memoryresource[0].alloc[0].init, false);
295+
QCOMPARE(libraryData.memoryresource[0].alloc[0].noFail, false);
295296
QCOMPARE(libraryData.memoryresource[0].alloc[0].arg, -1);
296297
QCOMPARE(libraryData.memoryresource[0].alloc[0].reallocArg, -1);
297298

298299
QCOMPARE(libraryData.memoryresource[0].alloc[1].name, QString("calloc"));
299300
QCOMPARE(libraryData.memoryresource[0].alloc[1].bufferSize, QString("calloc"));
300301
QCOMPARE(libraryData.memoryresource[0].alloc[1].isRealloc, false);
301302
QCOMPARE(libraryData.memoryresource[0].alloc[1].init, true);
303+
QCOMPARE(libraryData.memoryresource[0].alloc[1].noFail, false);
302304
QCOMPARE(libraryData.memoryresource[0].alloc[1].arg, -1);
303305
QCOMPARE(libraryData.memoryresource[0].alloc[1].reallocArg, -1);
304306

305307
QCOMPARE(libraryData.memoryresource[0].alloc[2].name, QString("realloc"));
306308
QCOMPARE(libraryData.memoryresource[0].alloc[2].bufferSize, QString("malloc:2"));
307309
QCOMPARE(libraryData.memoryresource[0].alloc[2].isRealloc, true);
308310
QCOMPARE(libraryData.memoryresource[0].alloc[2].init, false);
311+
QCOMPARE(libraryData.memoryresource[0].alloc[2].noFail, false);
309312
QCOMPARE(libraryData.memoryresource[0].alloc[2].arg, -1);
310313
QCOMPARE(libraryData.memoryresource[0].alloc[2].reallocArg, -1);
311314

312315
QCOMPARE(libraryData.memoryresource[0].alloc[3].name, QString("UuidToString"));
313316
QCOMPARE(libraryData.memoryresource[0].alloc[3].bufferSize.isEmpty(), true);
314317
QCOMPARE(libraryData.memoryresource[0].alloc[3].isRealloc, false);
315318
QCOMPARE(libraryData.memoryresource[0].alloc[3].init, false);
319+
QCOMPARE(libraryData.memoryresource[0].alloc[3].noFail, false);
316320
QCOMPARE(libraryData.memoryresource[0].alloc[3].arg, 2);
317321
QCOMPARE(libraryData.memoryresource[0].alloc[3].reallocArg, -1);
318322

@@ -328,6 +332,7 @@ void TestCppcheckLibraryData::memoryResourceValid()
328332
QCOMPARE(libraryData.memoryresource[1].alloc[0].bufferSize.isEmpty(), true);
329333
QCOMPARE(libraryData.memoryresource[1].alloc[0].isRealloc, false);
330334
QCOMPARE(libraryData.memoryresource[1].alloc[0].init, true);
335+
QCOMPARE(libraryData.memoryresource[1].alloc[0].noFail, false);
331336
QCOMPARE(libraryData.memoryresource[1].alloc[0].arg, 1);
332337
QCOMPARE(libraryData.memoryresource[1].alloc[0].reallocArg, -1);
333338

@@ -362,6 +367,7 @@ void TestCppcheckLibraryData::memoryResourceValid()
362367
QCOMPARE(lhs.alloc[num].bufferSize, rhs.alloc[num].bufferSize);
363368
QCOMPARE(lhs.alloc[num].isRealloc, rhs.alloc[num].isRealloc);
364369
QCOMPARE(lhs.alloc[num].init, rhs.alloc[num].init);
370+
QCOMPARE(lhs.alloc[num].noFail, rhs.alloc[num].noFail);
365371
QCOMPARE(lhs.alloc[num].arg, rhs.alloc[num].arg);
366372
QCOMPARE(lhs.alloc[num].reallocArg, rhs.alloc[num].reallocArg);
367373
}

0 commit comments

Comments
 (0)