--- old/src/java.desktop/windows/native/libawt/windows/awt_BitmapUtil.cpp 2017-11-06 11:54:04.208549073 -0800 +++ new/src/java.desktop/windows/native/libawt/windows/awt_BitmapUtil.cpp 2017-11-06 11:54:03.692549087 -0800 @@ -246,17 +246,28 @@ UINT height = abs(bi.bmiHeader.biHeight); BYTE * buf = (BYTE*)safe_Malloc(bi.bmiHeader.biSizeImage); + if (!buf) { + ::DeleteDC(hdc); + return NULL; + } bi.bmiHeader.biHeight = -(INT)height; ::GetDIBits(hdc, hBitmap, 0, height, buf, reinterpret_cast(&bi), DIB_RGB_COLORS); /* reserving memory for the worst case */ if (!IS_SAFE_SIZE_MUL(width / 2 + 1, height)) { - throw std::bad_alloc(); + ::DeleteDC(hdc); + free(buf); + return NULL; } RGNDATA * pRgnData = (RGNDATA *) SAFE_SIZE_STRUCT_ALLOC(safe_Malloc, sizeof(RGNDATAHEADER), sizeof(RECT), (width / 2 + 1) * height); + if (!pRgnData) { + ::DeleteDC(hdc); + free(buf); + return NULL; + } RGNDATAHEADER * pRgnHdr = (RGNDATAHEADER *) pRgnData; pRgnHdr->dwSize = sizeof(RGNDATAHEADER); pRgnHdr->iType = RDH_RECTANGLES;