Merge pull request #4231 from yagneshprajapati:main

PiperOrigin-RevId: 532204016
Change-Id: Ifa309f31bb959b43faa54c5ce631a823e6a2888a
diff --git a/BUILD.bazel b/BUILD.bazel
index ac62251..b1e3b7f 100644
--- a/BUILD.bazel
+++ b/BUILD.bazel
@@ -132,6 +132,7 @@
     }),
     deps = select({
         ":has_absl": [
+            "@com_google_absl//absl/container:flat_hash_set",
             "@com_google_absl//absl/debugging:failure_signal_handler",
             "@com_google_absl//absl/debugging:stacktrace",
             "@com_google_absl//absl/debugging:symbolize",
diff --git a/README.md b/README.md
index 54f534e..14bb9e3 100644
--- a/README.md
+++ b/README.md
@@ -41,7 +41,7 @@
 projects. These were so closely related that it makes sense to maintain and
 release them together.
 
-### Getting Started 
+### Getting Started
 
 See the [GoogleTest User's Guide](https://google.github.io/googletest/) for
 documentation. We recommend starting with the
@@ -50,18 +50,40 @@
 More information about building GoogleTest can be found at
 [googletest/README.md](googletest/README.md).
 
-| Feature | Description |
-| --- | --- |
-| xUnit test framework | Googletest is based on the [xUnit](https://en.wikipedia.org/wiki/XUnit) testing framework, a popular architecture for unit testing |
-| Test discovery | Googletest automatically discovers and runs your tests, eliminating the need to manually register your tests |
-| Rich set of assertions | Googletest provides a variety of assertions, such as equality, inequality, exceptions, and more, making it easy to test your code |
-| User-defined assertions | You can define your own assertions with Googletest, making it simple to write tests that are specific to your code |
-| Death tests | Googletest supports death tests, which verify that your code exits in a certain way, making it useful for testing error-handling code |
-| Fatal and non-fatal failures | You can specify whether a test failure should be treated as fatal or non-fatal with Googletest, allowing tests to continue running even if a failure occurs |
-| Value-parameterized tests | Googletest supports value-parameterized tests, which run multiple times with different input values, making it useful for testing functions that take different inputs |
-| Type-parameterized tests | Googletest also supports type-parameterized tests, which run with different data types, making it useful for testing functions that work with different data types |
-| Various options for running tests | Googletest provides many options for running tests, including running individual tests, running tests in a specific order, and running tests in parallel |
-
+| Feature                      | Description                                   |
+| ---------------------------- | --------------------------------------------- |
+| xUnit test framework         | Googletest is based on the                    |
+:                              : [xUnit](https\://en.wikipedia.org/wiki/XUnit) :
+:                              : testing framework, a popular architecture for :
+:                              : unit testing                                  :
+| Test discovery               | Googletest automatically discovers and runs   |
+:                              : your tests, eliminating the need to manually  :
+:                              : register your tests                           :
+| Rich set of assertions       | Googletest provides a variety of assertions,  |
+:                              : such as equality, inequality, exceptions, and :
+:                              : more, making it easy to test your code        :
+| User-defined assertions      | You can define your own assertions with       |
+:                              : Googletest, making it simple to write tests   :
+:                              : that are specific to your code                :
+| Death tests                  | Googletest supports death tests, which verify |
+:                              : that your code exits in a certain way, making :
+:                              : it useful for testing error-handling code     :
+| Fatal and non-fatal failures | You can specify whether a test failure should |
+:                              : be treated as fatal or non-fatal with         :
+:                              : Googletest, allowing tests to continue        :
+:                              : running even if a failure occurs              :
+| Value-parameterized tests    | Googletest supports value-parameterized       |
+:                              : tests, which run multiple times with          :
+:                              : different input values, making it useful for  :
+:                              : testing functions that take different inputs  :
+| Type-parameterized tests     | Googletest also supports type-parameterized   |
+:                              : tests, which run with different data types,   :
+:                              : making it useful for testing functions that   :
+:                              : work with different data types                :
+| Various options for running  | Googletest provides many options for running  |
+: tests                        : tests, including running individual tests,    :
+:                              : running tests in a specific order, and        :
+:                              : running tests in parallel                     :
 
 ## Supported Platforms
 
diff --git a/googletest/src/gtest-death-test.cc b/googletest/src/gtest-death-test.cc
index c3b7820..4cf78e7 100644
--- a/googletest/src/gtest-death-test.cc
+++ b/googletest/src/gtest-death-test.cc
@@ -625,9 +625,11 @@
   return success;
 }
 
+#ifndef GTEST_OS_WINDOWS
 // Note: The return value points into args, so the return value's lifetime is
 // bound to that of args.
-std::unique_ptr<char*[]> CreateArgvFromArgs(std::vector<std::string>& args) {
+static std::unique_ptr<char*[]> CreateArgvFromArgs(
+    std::vector<std::string>& args) {
   auto result = std::make_unique<char*[]>(args.size() + 1);
   for (size_t i = 0; i < args.size(); ++i) {
     result[i] = &args[i][0];
@@ -635,6 +637,7 @@
   result[args.size()] = nullptr;  // extra null terminator
   return result;
 }
+#endif
 
 #ifdef GTEST_OS_WINDOWS
 // WindowsDeathTest implements death tests on Windows. Due to the