Index: printing/backend/win_helper.h |
diff --git a/printing/backend/win_helper.h b/printing/backend/win_helper.h |
index db66bf89c4822c94aab94a7c41dd4501d7f0e4ab..0f6b7ef80855ad31b501a81ba90f49f7ddb8e0b0 100644 |
--- a/printing/backend/win_helper.h |
+++ b/printing/backend/win_helper.h |
@@ -46,10 +46,9 @@ |
base::win::VerifierTraits> { |
public: |
bool OpenPrinter(const wchar_t* printer) { |
- HANDLE temp_handle; |
// ::OpenPrinter may return error but assign some value into handle. |
- if (::OpenPrinter(const_cast<LPTSTR>(printer), &temp_handle, NULL)) { |
- Set(temp_handle); |
+ if (!::OpenPrinter(const_cast<LPTSTR>(printer), Receive(), NULL)) { |
+ Take(); |
} |
return IsValid(); |
} |
@@ -57,6 +56,10 @@ |
private: |
typedef base::win::GenericScopedHandle<PrinterHandleTraits, |
base::win::VerifierTraits> Base; |
+ // Hide Receive to avoid assigning handle when ::OpenPrinter returned error. |
+ Base::Receiver Receive() { |
+ return Base::Receive(); |
+ } |
}; |
class PrinterChangeHandleTraits { |