| Index: printing/backend/win_helper.cc
|
| diff --git a/printing/backend/win_helper.cc b/printing/backend/win_helper.cc
|
| index 8d75f201ff021ac970758d318675b3ffdea40343..914dacb06f71fd0dc3fd8246502b8dd48e6b21b4 100644
|
| --- a/printing/backend/win_helper.cc
|
| +++ b/printing/backend/win_helper.cc
|
| @@ -472,6 +472,11 @@ scoped_ptr<DEVMODE, base::FreeDeleter> CreateDevMode(HANDLE printer,
|
| NULL, printer, const_cast<wchar_t*>(L""), NULL, NULL, 0);
|
| if (buffer_size < static_cast<int>(sizeof(DEVMODE)))
|
| return scoped_ptr<DEVMODE, base::FreeDeleter>();
|
| +
|
| + // Some drivers request buffers with size smaller than dmSize + dmDriverExtra.
|
| + // crbug.com/421402
|
| + buffer_size *= 2;
|
| +
|
| scoped_ptr<DEVMODE, base::FreeDeleter> out(
|
| reinterpret_cast<DEVMODE*>(calloc(buffer_size, 1)));
|
| DWORD flags = (in ? (DM_IN_BUFFER) : 0) | DM_OUT_BUFFER;
|
| @@ -501,6 +506,11 @@ scoped_ptr<DEVMODE, base::FreeDeleter> PromptDevMode(
|
| 0);
|
| if (buffer_size < static_cast<int>(sizeof(DEVMODE)))
|
| return scoped_ptr<DEVMODE, base::FreeDeleter>();
|
| +
|
| + // Some drivers request buffers with size smaller than dmSize + dmDriverExtra.
|
| + // crbug.com/421402
|
| + buffer_size *= 2;
|
| +
|
| scoped_ptr<DEVMODE, base::FreeDeleter> out(
|
| reinterpret_cast<DEVMODE*>(calloc(buffer_size, 1)));
|
| DWORD flags = (in ? (DM_IN_BUFFER) : 0) | DM_OUT_BUFFER | DM_IN_PROMPT;
|
|
|