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

Side by Side Diff: core/src/fxge/win32/fx_win32_dib.cpp

Issue 1192743004: Cleanup: Do not check pointers before deleting them. (Closed) Base URL: https://pdfium.googlesource.com/pdfium@master
Patch Set: Created 5 years, 6 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 PDFium Authors. All rights reserved. 1 // Copyright 2014 PDFium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6 6
7 #include "../../../include/fxge/fx_ge.h" 7 #include "../../../include/fxge/fx_ge.h"
8 #if _FX_OS_ == _FX_WIN32_DESKTOP_ || _FX_OS_ == _FX_WIN64_DESKTOP_ 8 #if _FX_OS_ == _FX_WIN32_DESKTOP_ || _FX_OS_ == _FX_WIN64_DESKTOP_
9 #include <windows.h> 9 #include <windows.h>
10 #include "../../../include/fxge/fx_ge_win32.h" 10 #include "../../../include/fxge/fx_ge_win32.h"
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
128 GetBitmapSize(hBitmap, width, height); 128 GetBitmapSize(hBitmap, width, height);
129 CFX_DIBitmap* pDIBitmap = new CFX_DIBitmap; 129 CFX_DIBitmap* pDIBitmap = new CFX_DIBitmap;
130 if (!pDIBitmap->Create(width, height, FXDIB_Rgb)) { 130 if (!pDIBitmap->Create(width, height, FXDIB_Rgb)) {
131 delete pDIBitmap; 131 delete pDIBitmap;
132 DeleteDC(hDC); 132 DeleteDC(hDC);
133 return NULL; 133 return NULL;
134 } 134 }
135 CFX_ByteString info = GetBitmapInfo(pDIBitmap); 135 CFX_ByteString info = GetBitmapInfo(pDIBitmap);
136 int ret = GetDIBits(hDC, hBitmap, 0, height, pDIBitmap->GetBuffer(), (BITMAP INFO*)info.c_str(), DIB_RGB_COLORS); 136 int ret = GetDIBits(hDC, hBitmap, 0, height, pDIBitmap->GetBuffer(), (BITMAP INFO*)info.c_str(), DIB_RGB_COLORS);
137 if (!ret) { 137 if (!ret) {
138 if (pDIBitmap) { 138 delete pDIBitmap;
139 delete pDIBitmap;
140 }
141 pDIBitmap = NULL; 139 pDIBitmap = NULL;
142 } 140 }
143 DeleteDC(hDC); 141 DeleteDC(hDC);
144 return pDIBitmap; 142 return pDIBitmap;
145 } 143 }
146 CFX_DIBitmap* CFX_WindowsDIB::LoadDIBitmap(WINDIB_Open_Args_ args) 144 CFX_DIBitmap* CFX_WindowsDIB::LoadDIBitmap(WINDIB_Open_Args_ args)
147 { 145 {
148 CWin32Platform* pPlatform = (CWin32Platform*)CFX_GEModule::Get()->GetPlatfor mData(); 146 CWin32Platform* pPlatform = (CWin32Platform*)CFX_GEModule::Get()->GetPlatfor mData();
149 if (pPlatform->m_GdiplusExt.IsAvailable()) { 147 if (pPlatform->m_GdiplusExt.IsAvailable()) {
150 return pPlatform->m_GdiplusExt.LoadDIBitmap(args); 148 return pPlatform->m_GdiplusExt.LoadDIBitmap(args);
151 } else if (args.flags == WINDIB_OPEN_MEMORY) { 149 } else if (args.flags == WINDIB_OPEN_MEMORY) {
152 return NULL; 150 return NULL;
153 } 151 }
154 HBITMAP hBitmap = (HBITMAP)LoadImageW(NULL, (wchar_t*)args.path_name, IMAGE_ BITMAP, 0, 0, LR_LOADFROMFILE); 152 HBITMAP hBitmap = (HBITMAP)LoadImageW(NULL, (wchar_t*)args.path_name, IMAGE_ BITMAP, 0, 0, LR_LOADFROMFILE);
155 if (hBitmap == NULL) { 153 if (hBitmap == NULL) {
156 return NULL; 154 return NULL;
157 } 155 }
158 HDC hDC = CreateCompatibleDC(NULL); 156 HDC hDC = CreateCompatibleDC(NULL);
159 int width, height; 157 int width, height;
160 GetBitmapSize(hBitmap, width, height); 158 GetBitmapSize(hBitmap, width, height);
161 CFX_DIBitmap* pDIBitmap = new CFX_DIBitmap; 159 CFX_DIBitmap* pDIBitmap = new CFX_DIBitmap;
162 if (!pDIBitmap->Create(width, height, FXDIB_Rgb)) { 160 if (!pDIBitmap->Create(width, height, FXDIB_Rgb)) {
163 delete pDIBitmap; 161 delete pDIBitmap;
164 DeleteDC(hDC); 162 DeleteDC(hDC);
165 return NULL; 163 return NULL;
166 } 164 }
167 CFX_ByteString info = GetBitmapInfo(pDIBitmap); 165 CFX_ByteString info = GetBitmapInfo(pDIBitmap);
168 int ret = GetDIBits(hDC, hBitmap, 0, height, pDIBitmap->GetBuffer(), (BITMAP INFO*)info.c_str(), DIB_RGB_COLORS); 166 int ret = GetDIBits(hDC, hBitmap, 0, height, pDIBitmap->GetBuffer(), (BITMAP INFO*)info.c_str(), DIB_RGB_COLORS);
169 if (!ret) { 167 if (!ret) {
170 if (pDIBitmap) { 168 delete pDIBitmap;
171 delete pDIBitmap;
172 }
173 pDIBitmap = NULL; 169 pDIBitmap = NULL;
174 } 170 }
175 DeleteDC(hDC); 171 DeleteDC(hDC);
176 return pDIBitmap; 172 return pDIBitmap;
177 } 173 }
178 CFX_DIBitmap* CFX_WindowsDIB::LoadFromDDB(HDC hDC, HBITMAP hBitmap, FX_DWORD* pP alette, FX_DWORD palsize) 174 CFX_DIBitmap* CFX_WindowsDIB::LoadFromDDB(HDC hDC, HBITMAP hBitmap, FX_DWORD* pP alette, FX_DWORD palsize)
179 { 175 {
180 FX_BOOL bCreatedDC = hDC == NULL; 176 FX_BOOL bCreatedDC = hDC == NULL;
181 if (hDC == NULL) { 177 if (hDC == NULL) {
182 hDC = CreateCompatibleDC(NULL); 178 hDC = CreateCompatibleDC(NULL);
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
234 for (int row = 0; row < height; row ++) { 230 for (int row = 0; row < height; row ++) {
235 uint8_t* dest_scan = (uint8_t*)(pDIBitmap->GetBuffer() + row * p itch); 231 uint8_t* dest_scan = (uint8_t*)(pDIBitmap->GetBuffer() + row * p itch);
236 for (int col = 0; col < width; col++) { 232 for (int col = 0; col < width; col++) {
237 dest_scan[3] = 255; 233 dest_scan[3] = 255;
238 dest_scan += 4; 234 dest_scan += 4;
239 } 235 }
240 } 236 }
241 } 237 }
242 } 238 }
243 if (ret == 0) { 239 if (ret == 0) {
244 if (pDIBitmap) { 240 delete pDIBitmap;
245 delete pDIBitmap;
246 }
247 pDIBitmap = NULL; 241 pDIBitmap = NULL;
248 } 242 }
249 if (bCreatedDC) { 243 if (bCreatedDC) {
250 DeleteDC(hDC); 244 DeleteDC(hDC);
251 } 245 }
252 return pDIBitmap; 246 return pDIBitmap;
253 } 247 }
254 CFX_WindowsDIB::CFX_WindowsDIB(HDC hDC, int width, int height) 248 CFX_WindowsDIB::CFX_WindowsDIB(HDC hDC, int width, int height)
255 { 249 {
256 Create(width, height, FXDIB_Rgb, (uint8_t*)1); 250 Create(width, height, FXDIB_Rgb, (uint8_t*)1);
(...skipping 16 matching lines...) Expand all
273 } 267 }
274 void CFX_WindowsDIB::LoadFromDevice(HDC hDC, int left, int top) 268 void CFX_WindowsDIB::LoadFromDevice(HDC hDC, int left, int top)
275 { 269 {
276 ::BitBlt(m_hMemDC, 0, 0, m_Width, m_Height, hDC, left, top, SRCCOPY); 270 ::BitBlt(m_hMemDC, 0, 0, m_Width, m_Height, hDC, left, top, SRCCOPY);
277 } 271 }
278 void CFX_WindowsDIB::SetToDevice(HDC hDC, int left, int top) 272 void CFX_WindowsDIB::SetToDevice(HDC hDC, int left, int top)
279 { 273 {
280 ::BitBlt(hDC, left, top, m_Width, m_Height, m_hMemDC, 0, 0, SRCCOPY); 274 ::BitBlt(hDC, left, top, m_Width, m_Height, m_hMemDC, 0, 0, SRCCOPY);
281 } 275 }
282 #endif 276 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698