Skip to content

Commit 581cc5a

Browse files
Fix ShaderModel::Get() when entry does not exist in hashToIdxMap (microsoft#4678)
1 parent 8b8956f commit 581cc5a

File tree

2 files changed

+2
-2
lines changed

2 files changed

+2
-2
lines changed

lib/DXIL/DxilShaderModel.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,7 @@ const ShaderModel *ShaderModel::Get(Kind Kind, unsigned Major, unsigned Minor) {
171171
unsigned hash = (unsigned)Kind << 16 | Major << 8 | Minor;
172172
auto pred = [](const std::pair<unsigned, unsigned>& elem, unsigned val){ return elem.first < val;};
173173
auto it = std::lower_bound(std::begin(hashToIdxMap), std::end(hashToIdxMap), hash, pred);
174-
if (it == std::end(hashToIdxMap))
174+
if (it == std::end(hashToIdxMap) || it->first != hash)
175175
return GetInvalid();
176176
return &ms_ShaderModels[it->second];
177177
// VALRULE-TEXT:END

utils/hct/hctdb_instrhelp.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1391,7 +1391,7 @@ def get_shader_model_get():
13911391
result += "unsigned hash = (unsigned)Kind << 16 | Major << 8 | Minor;\n"
13921392
result += "auto pred = [](const std::pair<unsigned, unsigned>& elem, unsigned val){ return elem.first < val;};\n"
13931393
result += "auto it = std::lower_bound(std::begin(hashToIdxMap), std::end(hashToIdxMap), hash, pred);\n"
1394-
result += "if (it == std::end(hashToIdxMap))\n"
1394+
result += "if (it == std::end(hashToIdxMap) || it->first != hash)\n"
13951395
result += " return GetInvalid();\n"
13961396
result += "return &ms_ShaderModels[it->second];"
13971397
return result

0 commit comments

Comments
 (0)