Limit size of log_signal buffer to 100 elements

This commit is contained in:
Clifford Wolf 2014-08-02 15:52:21 +02:00
parent e590ffc84d
commit 08392aad8f
2 changed files with 9 additions and 2 deletions

View File

@ -41,6 +41,7 @@ int log_verbose_level;
std::vector<int> header_count; std::vector<int> header_count;
std::list<std::string> string_buf; std::list<std::string> string_buf;
int string_buf_size = 0;
static struct timeval initial_tv = { 0, 0 }; static struct timeval initial_tv = { 0, 0 };
static bool next_print_log = false; static bool next_print_log = false;
@ -166,6 +167,7 @@ void log_pop()
{ {
header_count.pop_back(); header_count.pop_back();
string_buf.clear(); string_buf.clear();
string_buf_size = 0;
log_flush(); log_flush();
} }
@ -174,6 +176,7 @@ void log_reset_stack()
while (header_count.size() > 1) while (header_count.size() > 1)
header_count.pop_back(); header_count.pop_back();
string_buf.clear(); string_buf.clear();
string_buf_size = 0;
log_flush(); log_flush();
} }
@ -197,6 +200,10 @@ const char *log_signal(const RTLIL::SigSpec &sig, bool autoint)
fputc(0, f); fputc(0, f);
fclose(f); fclose(f);
if (string_buf_size < 100)
string_buf_size++;
else
string_buf.pop_front();
string_buf.push_back(ptr); string_buf.push_back(ptr);
free(ptr); free(ptr);

View File

@ -74,7 +74,7 @@ namespace RTLIL
struct IdString struct IdString
{ {
// the global string cache // the global id string cache
struct char_ptr_cmp { struct char_ptr_cmp {
bool operator()(const char *a, const char *b) { bool operator()(const char *a, const char *b) {
@ -134,7 +134,7 @@ namespace RTLIL
global_free_idx_list_.push_back(idx); global_free_idx_list_.push_back(idx);
} }
// The actual IdString objects just is a single int // the actual IdString object is just is a single int
int index_; int index_;