From ebf8baa6d4091ddc0332335f79d4db3aa17442f2 Mon Sep 17 00:00:00 2001 From: chmielew Date: Wed, 10 Jul 2019 13:01:04 +0200 Subject: [PATCH] ocloc getProductFamily, createDumpDir fix getProductFamily no longer throws segfault error. Dumping directory is created automatically. Change-Id: Ia1f33dec1bf873312e5f7b842aaf189e98103590 --- offline_compiler/decoder/binary_decoder.cpp | 10 ++++++++++ offline_compiler/decoder/helper.cpp | 6 ++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/offline_compiler/decoder/binary_decoder.cpp b/offline_compiler/decoder/binary_decoder.cpp index 0f521d4282..81c42cfb8a 100644 --- a/offline_compiler/decoder/binary_decoder.cpp +++ b/offline_compiler/decoder/binary_decoder.cpp @@ -17,6 +17,14 @@ #include #include +#ifdef _WIN32 +#include +#define MakeDirectory _mkdir +#else +#include +#define MakeDirectory(dir) mkdir(dir, 0777) +#endif + void BinaryDecoder::setMessagePrinter(const MessagePrinter &messagePrinter) { this->messagePrinter = messagePrinter; } @@ -496,6 +504,8 @@ int BinaryDecoder::validateInput(uint32_t argc, const char **argv) { if (false == iga->isKnownPlatform()) { messagePrinter.printf("Warning : missing or invalid -device parameter - results may be inacurate\n"); } + + MakeDirectory(pathToDump.c_str()); } return 0; } diff --git a/offline_compiler/decoder/helper.cpp b/offline_compiler/decoder/helper.cpp index 141c06d189..0599fb4aa1 100644 --- a/offline_compiler/decoder/helper.cpp +++ b/offline_compiler/decoder/helper.cpp @@ -46,7 +46,8 @@ void readFileToVectorOfStrings(std::vector &lines, const std::strin if (file.good()) { if (replaceTabs) { for (std::string line; std::getline(file, line);) { - std::replace_if(line.begin(), line.end(), [](auto c) { return c == '\t'; }, ' '); + std::replace_if( + line.begin(), line.end(), [](auto c) { return c == '\t'; }, ' '); lines.push_back(std::move(line)); } } else { @@ -75,7 +76,8 @@ size_t findPos(const std::vector &lines, const std::string &whatToF PRODUCT_FAMILY getProductFamilyFromDeviceName(const std::string &deviceName) { for (unsigned int productId = 0; productId < IGFX_MAX_PRODUCT; ++productId) { - if (deviceName == NEO::hardwarePrefix[productId]) { + if (NEO::hardwarePrefix[productId] != nullptr && + deviceName == NEO::hardwarePrefix[productId]) { return static_cast(productId); } }