Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / printing / backend / win_helper.cc
index 075913e..6aba7c6 100644 (file)
@@ -432,53 +432,58 @@ 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->dmFields & DM_COLOR) &&
-      ((default->dmColor == DMCOLOR_COLOR) == color)) {
-    return default.Pass();
+  scoped_ptr<DEVMODE, base::FreeDeleter> default_ticket =
+      CreateDevMode(printer, NULL);
+  if (!default_ticket)
+    return default_ticket.Pass();
+
+  if ((default_ticket->dmFields & DM_COLOR) &&
+      ((default_ticket->dmColor == DMCOLOR_COLOR) == color)) {
+    return default_ticket.Pass();
   }
 
-  default->dmFields |= DM_COLOR;
-  default->dmColor = color ? DMCOLOR_COLOR : DMCOLOR_MONOCHROME;
+  default_ticket->dmFields |= DM_COLOR;
+  default_ticket->dmColor = color ? DMCOLOR_COLOR : DMCOLOR_MONOCHROME;
 
   DriverInfo6 info_6;
   if (!info_6.Init(printer))
-    return default.Pass();
+    return default_ticket.Pass();
 
   const DRIVER_INFO_6* p = info_6.get();
 
   // Only HP known to have issues.
   if (!p->pszMfgName || wcscmp(p->pszMfgName, L"HP") != 0)
-    return default.Pass();
+    return default_ticket.Pass();
 
   // Need XPS for this workaround.
   printing::ScopedXPSInitializer xps_initializer;
   if (!xps_initializer.initialized())
-    return default.Pass();
+    return default_ticket.Pass();
 
   const char* xps_color = color ? kXpsTicketColor : kXpsTicketMonochrome;
   std::string xps_ticket = base::StringPrintf(kXpsTicketTemplate, xps_color);
   scoped_ptr<DEVMODE, base::FreeDeleter> ticket =
       printing::XpsTicketToDevMode(printer_name, xps_ticket);
   if (!ticket)
-    return default.Pass();
+    return default_ticket.Pass();
 
   return ticket.Pass();
 }
 
 scoped_ptr<DEVMODE, base::FreeDeleter> CreateDevMode(HANDLE printer,
                                                      DEVMODE* in) {
-  LONG buffer_size = DocumentProperties(NULL, printer, L"", NULL, NULL, 0);
+  LONG buffer_size = DocumentProperties(
+      NULL, printer, const_cast<wchar_t*>(L""), NULL, NULL, 0);
   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)
+  if (DocumentProperties(
+          NULL, printer, const_cast<wchar_t*>(L""), out.get(), in, flags) !=
+      IDOK) {
     return scoped_ptr<DEVMODE, base::FreeDeleter>();
+  }
   CHECK_GE(buffer_size, out.get()->dmSize + out.get()->dmDriverExtra);
   return out.Pass();
 }