Index: base/win/scoped_handle_unittest.cc |
diff --git a/base/win/scoped_handle_unittest.cc b/base/win/scoped_handle_unittest.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..70431ace07d1b66777ee4814899029cb7a1d76d3 |
--- /dev/null |
+++ b/base/win/scoped_handle_unittest.cc |
@@ -0,0 +1,32 @@ |
+// Copyright (c) 2011 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "base/win/scoped_handle.h" |
+ |
+#include "testing/gtest/include/gtest/gtest.h" |
+ |
+TEST(ScopedHandleTest, ScopedHandle) { |
+ // Any illegal error code will do. We just need to test that it is preserved |
+ // by ScopedHandle to avoid bug 528394. |
+ const DWORD magic_error = 0x12345678; |
+ |
+ HANDLE handle = ::CreateMutex(nullptr, FALSE, nullptr); |
+ // Call SetLastError after creating the handle. |
+ ::SetLastError(magic_error); |
+ base::win::ScopedHandle handle_holder(handle); |
+ EXPECT_EQ(magic_error, ::GetLastError()); |
+ |
+ // Create a new handle and then set LastError again. |
+ handle = ::CreateMutex(nullptr, FALSE, nullptr); |
+ ::SetLastError(magic_error); |
+ handle_holder.Set(handle); |
+ EXPECT_EQ(magic_error, ::GetLastError()); |
+ |
+ // Create a new handle and then set LastError again. |
+ handle = ::CreateMutex(nullptr, FALSE, nullptr); |
+ base::win::ScopedHandle handle_source(handle); |
+ ::SetLastError(magic_error); |
+ handle_holder = std::move(handle_source); |
dcheng
2015/09/18 21:22:19
Shouldn't this be Pass() rather than std::move()?
rvargas (doing something else)
2015/09/18 22:00:48
oops. Yes.
brucedawson
2015/09/18 22:01:21
You are correct. I will fix.
|
+ EXPECT_EQ(magic_error, ::GetLastError()); |
+} |