Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(132)

Unified Diff: printing/backend/win_helper.cc

Issue 191913002: scoped_ptr<DEVMODE[]> replaced with scoped_ptr<DEVMODE, base::FreeDeleter>. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « printing/backend/win_helper.h ('k') | printing/printing_context_win.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: printing/backend/win_helper.cc
diff --git a/printing/backend/win_helper.cc b/printing/backend/win_helper.cc
index 3405114029482dd1ed3e55c4637eb3327be815f1..075913eed3e3bc92f5ea90778d47fbb57581633a 100644
--- a/printing/backend/win_helper.cc
+++ b/printing/backend/win_helper.cc
@@ -385,23 +385,24 @@ std::string GetDriverInfo(HANDLE printer) {
return driver_info;
}
-scoped_ptr<DEVMODE[]> XpsTicketToDevMode(const base::string16& printer_name,
- const std::string& print_ticket) {
- scoped_ptr<DEVMODE[]> scoped_dev_mode;
+scoped_ptr<DEVMODE, base::FreeDeleter> XpsTicketToDevMode(
+ const base::string16& printer_name,
+ const std::string& print_ticket) {
+ scoped_ptr<DEVMODE, base::FreeDeleter> dev_mode;
printing::ScopedXPSInitializer xps_initializer;
if (!xps_initializer.initialized()) {
// TODO(sanjeevr): Handle legacy proxy case (with no prntvpt.dll)
- return scoped_dev_mode.Pass();
+ return dev_mode.Pass();
}
printing::ScopedPrinterHandle printer;
if (!printer.OpenPrinter(printer_name.c_str()))
- return scoped_dev_mode.Pass();
+ return dev_mode.Pass();
base::win::ScopedComPtr<IStream> pt_stream;
HRESULT hr = StreamFromPrintTicket(print_ticket, pt_stream.Receive());
if (FAILED(hr))
- return scoped_dev_mode.Pass();
+ return dev_mode.Pass();
HPTPROVIDER provider = NULL;
hr = printing::XPSModule::OpenProvider(printer_name, 1, &provider);
@@ -419,28 +420,29 @@ scoped_ptr<DEVMODE[]> XpsTicketToDevMode(const base::string16& printer_name,
if (SUCCEEDED(hr)) {
// Correct DEVMODE using DocumentProperties. See documentation for
// PTConvertPrintTicketToDevMode.
- scoped_dev_mode = CreateDevMode(printer, dm);
+ dev_mode = CreateDevMode(printer, dm);
printing::XPSModule::ReleaseMemory(dm);
}
printing::XPSModule::CloseProvider(provider);
}
- return scoped_dev_mode.Pass();
+ return dev_mode.Pass();
}
-scoped_ptr<DEVMODE[]> CreateDevModeWithColor(HANDLE printer,
- const base::string16& printer_name,
- bool color) {
- scoped_ptr<DEVMODE[]> default = CreateDevMode(printer, NULL);
+scoped_ptr<DEVMODE, base::FreeDeleter> CreateDevModeWithColor(
+ HANDLE printer,
+ const base::string16& printer_name,
+ bool color) {
+ scoped_ptr<DEVMODE, base::FreeDeleter> default = CreateDevMode(printer, NULL);
if (!default)
return default.Pass();
- if ((default.get()->dmFields & DM_COLOR) &&
- ((default.get()->dmColor == DMCOLOR_COLOR) == color)) {
+ if ((default->dmFields & DM_COLOR) &&
+ ((default->dmColor == DMCOLOR_COLOR) == color)) {
return default.Pass();
}
- default.get()->dmFields |= DM_COLOR;
- default.get()->dmColor = color ? DMCOLOR_COLOR : DMCOLOR_MONOCHROME;
+ default->dmFields |= DM_COLOR;
+ default->dmColor = color ? DMCOLOR_COLOR : DMCOLOR_MONOCHROME;
DriverInfo6 info_6;
if (!info_6.Init(printer))
@@ -459,25 +461,24 @@ scoped_ptr<DEVMODE[]> CreateDevModeWithColor(HANDLE printer,
const char* xps_color = color ? kXpsTicketColor : kXpsTicketMonochrome;
std::string xps_ticket = base::StringPrintf(kXpsTicketTemplate, xps_color);
- scoped_ptr<DEVMODE[]> ticket = printing::XpsTicketToDevMode(printer_name,
- xps_ticket);
+ scoped_ptr<DEVMODE, base::FreeDeleter> ticket =
+ printing::XpsTicketToDevMode(printer_name, xps_ticket);
if (!ticket)
return default.Pass();
return ticket.Pass();
}
-PRINTING_EXPORT scoped_ptr<DEVMODE[]> CreateDevMode(HANDLE printer,
- DEVMODE* in) {
+scoped_ptr<DEVMODE, base::FreeDeleter> CreateDevMode(HANDLE printer,
+ DEVMODE* in) {
LONG buffer_size = DocumentProperties(NULL, printer, L"", NULL, NULL, 0);
- if (buffer_size <= 0)
- return scoped_ptr<DEVMODE[]>();
- CHECK_GE(buffer_size, static_cast<int>(sizeof(DEVMODE)));
- scoped_ptr<DEVMODE[]> out(
- reinterpret_cast<DEVMODE*>(new uint8[buffer_size]));
+ if (buffer_size < static_cast<int>(sizeof(DEVMODE)))
+ return scoped_ptr<DEVMODE, base::FreeDeleter>();
+ scoped_ptr<DEVMODE, base::FreeDeleter> out(
+ reinterpret_cast<DEVMODE*>(malloc(buffer_size)));
DWORD flags = (in ? (DM_IN_BUFFER) : 0) | DM_OUT_BUFFER;
if (DocumentProperties(NULL, printer, L"", out.get(), in, flags) != IDOK)
- return scoped_ptr<DEVMODE[]>();
+ return scoped_ptr<DEVMODE, base::FreeDeleter>();
CHECK_GE(buffer_size, out.get()->dmSize + out.get()->dmDriverExtra);
return out.Pass();
}
« no previous file with comments | « printing/backend/win_helper.h ('k') | printing/printing_context_win.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698