mirror of
https://github.com/verilator/verilator.git
synced 2025-04-21 12:06:55 +00:00
Fix compares to null, part of bug1030.
This commit is contained in:
parent
0725999f0a
commit
850100c9c2
@ -1324,7 +1324,7 @@ VerilatedVar* VerilatedScope::varFind(const char* namep) const {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void* VerilatedScope::exportFindNullError(int funcnum) const {
|
||||
void* VerilatedScope::exportFindNullError(int funcnum) {
|
||||
// Slowpath - Called only when find has failed
|
||||
string msg = (string("Testbench C called '")
|
||||
+VerilatedImp::exportName(funcnum)
|
||||
|
@ -201,16 +201,16 @@ public: // But internals only - called from VerilatedModule's
|
||||
inline VerilatedSyms* symsp() const { return m_symsp; }
|
||||
VerilatedVar* varFind(const char* namep) const;
|
||||
VerilatedVarNameMap* varsp() const { return m_varsp; }
|
||||
void* exportFindError(int funcnum) const;
|
||||
void* exportFindNullError(int funcnum) const;
|
||||
void scopeDump() const;
|
||||
inline void* exportFind(int funcnum) const {
|
||||
if (VL_UNLIKELY(!this)) return exportFindNullError(funcnum);
|
||||
if (VL_LIKELY(funcnum < m_funcnumMax)) {
|
||||
void* exportFindError(int funcnum) const;
|
||||
static void* exportFindNullError(int funcnum);
|
||||
static inline void* exportFind(const VerilatedScope* scopep, int funcnum) {
|
||||
if (VL_UNLIKELY(!scopep)) return exportFindNullError(funcnum);
|
||||
if (VL_LIKELY(funcnum < scopep->m_funcnumMax)) {
|
||||
// m_callbacksp must be declared, as Max'es are > 0
|
||||
return m_callbacksp[funcnum];
|
||||
return scopep->m_callbacksp[funcnum];
|
||||
} else {
|
||||
return exportFindError(funcnum);
|
||||
return scopep->exportFindError(funcnum);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
@ -674,7 +674,7 @@ private:
|
||||
stmt += "const VerilatedScope* __Vscopep = Verilated::dpiScope();\n";
|
||||
// If dpiScope is fails and is null; the exportFind function throws and error
|
||||
string cbtype = v3Global.opt.prefix()+"__Vcb_"+nodep->cname()+"_t";
|
||||
stmt += cbtype+" __Vcb = ("+cbtype+")__Vscopep->exportFind(__Vfuncnum);\n";
|
||||
stmt += cbtype+" __Vcb = ("+cbtype+")(VerilatedScope::exportFind(__Vscopep, __Vfuncnum));\n"; // Can't use static_cast
|
||||
// If __Vcb is null the exportFind function throws and error
|
||||
dpip->addStmtsp(new AstCStmt(nodep->fileline(), stmt));
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user