Fixed log_id() memory corruption

This commit is contained in:
Clifford Wolf 2014-07-19 20:53:29 +02:00
parent efd9604dfb
commit 02f0acb3bc
2 changed files with 10 additions and 5 deletions

View File

@ -205,3 +205,11 @@ const char *log_signal(const RTLIL::SigSpec &sig, bool autoint)
return string_buf.back().c_str();
}
const char *log_id(std::string str)
{
if (str.size() > 1 && str[0] == '\\' && str[1] != '$')
string_buf.push_back(str.substr(1));
else
string_buf.push_back(str);
return string_buf.back().c_str();
}

View File

@ -51,13 +51,10 @@ void log_reset_stack();
void log_flush();
const char *log_signal(const RTLIL::SigSpec &sig, bool autoint = true);
static inline const char *log_id(std::string id) {
return RTLIL::id2cstr(id);
}
const char *log_id(std::string id);
template<typename T> static inline const char *log_id(T *obj) {
return RTLIL::id2cstr(obj->name);
return log_id(obj->name);
}
#define log_abort() log_error("Abort in %s:%d.\n", __FILE__, __LINE__)