Skip to content

Commit 156ac0e

Browse files
aczstomasz-blasz
authored andcommitted
fix: Fix undefined behavior caused by using reinterpret cast on an object with multiple inheritance
1 parent a8363b0 commit 156ac0e

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

languages/cpp/templates/codeblocks/module-init.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
${if.modules} ${info.Title}::I${info.Title}& ${info.Title}Interface() const override
22
{
33
auto module = _moduleMap.find("${info.Title}");
4-
${info.Title}::I${info.Title}* ${info.title.lowercase} = nullptr;
4+
${info.Title}::${info.Title}Impl* ${info.title.lowercase} = nullptr;
55

66
if (module != _moduleMap.end()) {
7-
${info.title.lowercase} = reinterpret_cast<${info.Title}::I${info.Title}*>(module->second);
7+
${info.title.lowercase} = dynamic_cast<${info.Title}::${info.Title}Impl*>(module->second);
88
} else {
9-
${info.title.lowercase} = reinterpret_cast<${info.Title}::I${info.Title}*>(new ${info.Title}::${info.Title}Impl());
10-
_moduleMap.emplace("${info.Title}", reinterpret_cast<IModule*>(${info.title.lowercase}));
9+
${info.title.lowercase} = new ${info.Title}::${info.Title}Impl();
10+
_moduleMap.emplace("${info.Title}", ${info.title.lowercase});
1111
}
1212
return *${info.title.lowercase};
1313
}

0 commit comments

Comments
 (0)