Fix check for redefined field.

We would fail even if the deobfuscated name is the same as before. This
happens in real world Proguard maps.

Change-Id: Id2410dc189d110e00cc3b078375e0593d96063ac
diff --git a/src/profiling/deobfuscator.h b/src/profiling/deobfuscator.h
index 061b5da..8348a45 100644
--- a/src/profiling/deobfuscator.h
+++ b/src/profiling/deobfuscator.h
@@ -59,7 +59,7 @@
   bool AddField(std::string obfuscated_name, std::string deobfuscated_name) {
     auto p = deobfuscated_fields_.emplace(std::move(obfuscated_name),
                                           deobfuscated_name);
-    return p.second && p.first->second == deobfuscated_name;
+    return p.second || p.first->second == deobfuscated_name;
   }
 
   void AddMethod(std::string obfuscated_name, std::string deobfuscated_name) {
diff --git a/src/profiling/deobfuscator_unittest.cc b/src/profiling/deobfuscator_unittest.cc
index 66001dd..6893aca 100644
--- a/src/profiling/deobfuscator_unittest.cc
+++ b/src/profiling/deobfuscator_unittest.cc
@@ -177,6 +177,16 @@
   ASSERT_TRUE(p.AddLine("    15:15:boolean doSomething(boolean):116:116 -> b"));
 }
 
+TEST(ProguardParserTest, DuplicateFieldSame) {
+  ProguardParser p;
+  ASSERT_TRUE(p.AddLine(
+      "android.arch.core.executor.ArchTaskExecutor -> android.arch.a.a.a:"));
+  ASSERT_TRUE(
+      p.AddLine("    android.arch.core.executor.TaskExecutor mDelegate -> b"));
+  ASSERT_TRUE(p.AddLine(
+      "    1:1:android.arch.core.executor.TaskExecutor mDelegate -> b"));
+}
+
 }  // namespace
 }  // namespace profiling
 }  // namespace perfetto