| Index: ui/views/corewm/cursor_height_provider_win.cc
|
| diff --git a/ui/views/corewm/cursor_height_provider_win.cc b/ui/views/corewm/cursor_height_provider_win.cc
|
| index e0f79e69371698a3863c96c7becb3ba5f6922a7f..97ed7a3465e5ab6fac56d1a4497c8d01e7fabb5b 100644
|
| --- a/ui/views/corewm/cursor_height_provider_win.cc
|
| +++ b/ui/views/corewm/cursor_height_provider_win.cc
|
| @@ -5,6 +5,7 @@
|
| #include "ui/views/corewm/cursor_height_provider_win.h"
|
|
|
| #include <windows.h>
|
| +#include <algorithm>
|
| #include <map>
|
|
|
| #include "base/basictypes.h"
|
| @@ -105,7 +106,9 @@ int CalculateCursorHeight(HCURSOR cursor_handle) {
|
| return kDefaultHeight;
|
|
|
| const int cursor_height = GetSystemMetrics(SM_CYCURSOR);
|
| - int i = bitmap_info.bmiHeader.biHeight - cursor_height;
|
| + // Crash data seems to indicate cursor_height may be bigger than the bitmap.
|
| + int i = std::max(0, static_cast<int>(bitmap_info.bmiHeader.biHeight) -
|
| + cursor_height);
|
| for (; i < bitmap_info.bmiHeader.biHeight; ++i) {
|
| if (!IsRowTransparent(data, row_size, last_byte_mask, i)) {
|
| i--;
|
|
|