MCPcopy Create free account
hub / github.com/Kitware/CMake / ProcessMemCheckDrMemoryOutput

Method ProcessMemCheckDrMemoryOutput

Source/CTest/cmCTestMemCheckHandler.cxx:1036–1071  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1034}
1035
1036bool cmCTestMemCheckHandler::ProcessMemCheckDrMemoryOutput(
1037 std::string const& str, std::string& log, std::vector<int>& results)
1038{
1039 std::vector<std::string> lines;
1040 cmsys::SystemTools::Split(str, lines);
1041
1042 cmsys::RegularExpression drMemoryError("^Error #[0-9]+");
1043
1044 cmsys::RegularExpression unaddressableAccess("UNADDRESSABLE ACCESS");
1045 cmsys::RegularExpression uninitializedRead("UNINITIALIZED READ");
1046 cmsys::RegularExpression invalidHeapArgument("INVALID HEAP ARGUMENT");
1047 cmsys::RegularExpression leak("LEAK");
1048 cmsys::RegularExpression handleLeak("HANDLE LEAK");
1049
1050 int defects = 0;
1051
1052 std::ostringstream ostr;
1053 for (auto const& l : lines) {
1054 ostr << l << std::endl;
1055 if (drMemoryError.find(l)) {
1056 defects++;
1057 if (unaddressableAccess.find(l) || uninitializedRead.find(l)) {
1058 results[cmCTestMemCheckHandler::UMR]++;
1059 } else if (leak.find(l) || handleLeak.find(l)) {
1060 results[cmCTestMemCheckHandler::MLK]++;
1061 } else if (invalidHeapArgument.find(l)) {
1062 results[cmCTestMemCheckHandler::FMM]++;
1063 }
1064 }
1065 }
1066
1067 log = ostr.str();
1068
1069 this->DefectCount += defects;
1070 return defects == 0;
1071}
1072
1073bool cmCTestMemCheckHandler::ProcessMemCheckBoundsCheckerOutput(
1074 std::string const& str, std::string& log, std::vector<int>& results)

Callers 1

ProcessMemCheckOutputMethod · 0.95

Calls 2

strMethod · 0.80
findMethod · 0.45

Tested by

no test coverage detected