From 681de18033236071e822ca709d912d32cd4b2f83 Mon Sep 17 00:00:00 2001 From: Evan Martin Date: Fri, 7 Jan 2011 13:54:52 -0800 Subject: later entry in build log should overwrite earlier one --- src/build_log.cc | 2 +- src/build_log_test.cc | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/build_log.cc b/src/build_log.cc index ba09b46..65567da 100644 --- a/src/build_log.cc +++ b/src/build_log.cc @@ -76,7 +76,7 @@ bool BuildLog::Load(const string& path, string* err) { start = end + 1; end = strchr(start, '\n'); entry->command = string(start, end - start); - log_.insert(make_pair(entry->output, entry)); + log_[entry->output] = entry; } return true; diff --git a/src/build_log_test.cc b/src/build_log_test.cc index 6807a04..11c0e09 100644 --- a/src/build_log_test.cc +++ b/src/build_log_test.cc @@ -41,3 +41,19 @@ TEST_F(BuildLogTest, WriteRead) { ASSERT_EQ(15, e1->time_ms); ASSERT_EQ("out", e1->output); } + +TEST_F(BuildLogTest, DoubleEntry) { + FILE* f = fopen(log_filename_.c_str(), "wb"); + fprintf(f, "0 out command abc\n"); + fprintf(f, "0 out command def\n"); + fclose(f); + + string err; + BuildLog log; + EXPECT_TRUE(log.Load(log_filename_, &err)); + ASSERT_EQ("", err); + + BuildLog::LogEntry* e = log.LookupByOutput("out"); + ASSERT_TRUE(e); + ASSERT_EQ("command def", e->command); +} -- cgit v0.12