@@ -210,7 +210,8 @@ class NBL_API2 IShaderCompiler : public core::IReferenceCounted
210
210
template <typename ... Args>
211
211
static core::smart_refctd_ptr<ICPUShader> createOverridenCopy (const ICPUShader* original, uint32_t position, const char * fmt, Args... args)
212
212
{
213
- assert (original == nullptr || (!original->isADummyObjectForCache () && original->isContentHighLevelLanguage ()));
213
+ if (!original || original->isADummyObjectForCache () || !original->isContentHighLevelLanguage ())
214
+ return nullptr ;
214
215
215
216
constexpr auto getMaxSize = [](auto num) -> size_t
216
217
{
@@ -230,12 +231,13 @@ class NBL_API2 IShaderCompiler : public core::IReferenceCounted
230
231
}
231
232
};
232
233
constexpr size_t templateArgsCount = sizeof ...(Args);
233
- size_t origLen = original ? original->getContent ()->getSize ():0u ;
234
- size_t formatArgsCharSize = (getMaxSize (args) + ...);
235
- size_t formatSize = strlen (fmt);
234
+ const size_t origLen = original ? original->getContent ()->getSize ():0u ;
235
+ const size_t formatArgsCharSize = (getMaxSize (args) + ...);
236
+ const size_t formatSize = strlen (fmt);
236
237
// 2 is an average size of a format (% and a letter) in chars.
237
238
// Assuming the format contains only one letter, but if it's 2, the outSize is gonna be a touch bigger.
238
- size_t outSize = origLen + formatArgsCharSize + formatSize - 2 * templateArgsCount;
239
+ constexpr size_t nullTerminatorSize = 1u ;
240
+ size_t outSize = origLen + formatArgsCharSize + formatSize + nullTerminatorSize - 2 * templateArgsCount;
239
241
240
242
nbl::core::smart_refctd_ptr<ICPUBuffer> outBuffer = nbl::core::make_smart_refctd_ptr<ICPUBuffer>(outSize);
241
243
0 commit comments