| 1034 | } |
| 1035 | |
| 1036 | bool 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 | |
| 1073 | bool cmCTestMemCheckHandler::ProcessMemCheckBoundsCheckerOutput( |
| 1074 | std::string const& str, std::string& log, std::vector<int>& results) |
no test coverage detected