diff --git a/doc/snippets/MagnumShaderTools.cpp b/doc/snippets/MagnumShaderTools.cpp index 12b91c6cb..3eeff6612 100644 --- a/doc/snippets/MagnumShaderTools.cpp +++ b/doc/snippets/MagnumShaderTools.cpp @@ -97,11 +97,10 @@ Containers::Array spirv = converter->convertDataToData( { Containers::Pointer converter; -Containers::Array extract(const std::string&, const std::string&); +Containers::Array extract(const std::string&, const std::string&); /* [AbstractConverter-usage-callbacks] */ struct Data { - std::unordered_map> files; + std::unordered_map> files; } data; converter->setInputFileCallback([](const std::string& filename, @@ -116,11 +115,16 @@ converter->setInputFileCallback([](const std::string& filename, return {}; } - /* Extract from an archive if not there yet */ - if(found == data.files.end()) found = data.files.emplace( - filename, extract("shaders.zip", filename)).first; + /* Extract from an archive if not there yet; fail if not extraction + failed */ + if(found == data.files.end()) { + Containers::Array file = extract("shaders.zip", filename); + if(!file) return {}; - return Containers::arrayView(found->second); + found = data.files.emplace(filename, std::move(file)).first; + } + + return Containers::ArrayView{found->second}; }, data); /* extracted from a ZIP */