Enables SetArgPointee<>() to accept a string literal; removes a self-assignment warning; teaches gmock doctor to diagnose TTB with Clang; picks up gtest r525.
diff --git a/test/gmock-actions_test.cc b/test/gmock-actions_test.cc
index 7200fa1..e12402b 100644
--- a/test/gmock-actions_test.cc
+++ b/test/gmock-actions_test.cc
@@ -715,6 +715,43 @@
   EXPECT_EQ('a', ch);
 }
 
+// Tests that SetArgPointee<N>() accepts a string literal.
+TEST(SetArgPointeeTest, AcceptsStringLiteral) {
+  typedef void MyFunction(bool, std::string*, const char**);
+  Action<MyFunction> a = SetArgPointee<1>("hi");
+  std::string str;
+  const char* ptr = NULL;
+  a.Perform(make_tuple(true, &str, &ptr));
+  EXPECT_EQ("hi", str);
+  EXPECT_TRUE(ptr == NULL);
+
+  a = SetArgPointee<2>("world");
+  str = "";
+  a.Perform(make_tuple(true, &str, &ptr));
+  EXPECT_EQ("", str);
+  EXPECT_STREQ("world", ptr);
+}
+
+// Tests that SetArgPointee<N>() accepts a char pointer.
+TEST(SetArgPointeeTest, AcceptsCharPointer) {
+  typedef void MyFunction(bool, std::string*, const char**);
+  const char* const hi = "hi";
+  Action<MyFunction> a = SetArgPointee<1>(hi);
+  std::string str;
+  const char* ptr = NULL;
+  a.Perform(make_tuple(true, &str, &ptr));
+  EXPECT_EQ("hi", str);
+  EXPECT_TRUE(ptr == NULL);
+
+  char world_array[] = "world";
+  char* const world = world_array;
+  a = SetArgPointee<2>(world);
+  str = "";
+  a.Perform(make_tuple(true, &str, &ptr));
+  EXPECT_EQ("", str);
+  EXPECT_EQ(world, ptr);
+}
+
 #if GTEST_HAS_PROTOBUF_
 
 // Tests that SetArgPointee<N>(proto_buffer) sets the v1 protobuf
diff --git a/test/gmock_test.cc b/test/gmock_test.cc
index ba137dd..0b89113 100644
--- a/test/gmock_test.cc
+++ b/test/gmock_test.cc
@@ -251,5 +251,5 @@
 TEST(FlagTest, IsAccessibleInCode) {
   bool dummy = testing::GMOCK_FLAG(catch_leaked_mocks) &&
       testing::GMOCK_FLAG(verbose) == "";
-  dummy = dummy;  // Avoids the "unused local variable" warning.
+  (void)dummy;  // Avoids the "unused local variable" warning.
 }