@@ -18,23 +18,32 @@ WarpFunctionItem::WarpFunctionItem(Warp::Ref<Warp::Function> function,
1818 BinaryNinja::Ref<BinaryNinja::Symbol> symbol = m_function->GetSymbol (*analysisFunction);
1919 std::string symbolName = symbol->GetShortName ();
2020 setText (QString::fromStdString (symbolName));
21-
22- // TODO: This needs to be better. Type can be nullptr.
23- BinaryNinja::Ref<BinaryNinja::Type> type = m_function->GetType (*analysisFunction);
24- BinaryNinja::Ref<BinaryNinja::Platform> platform = analysisFunction->GetPlatform ();
25- std::vector<BinaryNinja::InstructionTextToken> beforeTokens = type->GetTokensBeforeName (platform);
26- std::vector<BinaryNinja::InstructionTextToken> afterTokens = type->GetTokensAfterName (platform);
2721 BinaryNinja::InstructionTextToken nameToken = {255 , TextToken, symbolName};
2822
2923 // Serialize the tokens to make it accessible via QModelIndex.
3024 // We will take these tokens and then user them in our custom item delegate.
3125 TokenData tokenData = {};
32- for (const auto &token: beforeTokens)
33- tokenData.tokens .emplace_back (token);
34- tokenData.tokens .emplace_back (255 , TextToken, " " );
35- tokenData.tokens .emplace_back (nameToken);
36- for (const auto &token: afterTokens)
37- tokenData.tokens .emplace_back (token);
26+
27+ // TODO: Make this not look like garbage
28+ BinaryNinja::Ref<BinaryNinja::Type> type = m_function->GetType (*analysisFunction);
29+ if (type)
30+ {
31+ BinaryNinja::Ref<BinaryNinja::Platform> platform = analysisFunction->GetPlatform ();
32+ std::vector<BinaryNinja::InstructionTextToken> beforeTokens = type->GetTokensBeforeName (platform);
33+ std::vector<BinaryNinja::InstructionTextToken> afterTokens = type->GetTokensAfterName (platform);
34+
35+ for (const auto &token: beforeTokens)
36+ tokenData.tokens .emplace_back (token);
37+ tokenData.tokens .emplace_back (255 , TextToken, " " );
38+ tokenData.tokens .emplace_back (nameToken);
39+ for (const auto &token: afterTokens)
40+ tokenData.tokens .emplace_back (token);
41+ }
42+ else
43+ {
44+ tokenData.tokens .emplace_back (nameToken);
45+ }
46+
3847 setData (QVariant::fromValue (tokenData), Qt::UserRole);
3948}
4049
0 commit comments