Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * Copyright 2011 Google Inc. | 2 * Copyright 2011 Google Inc. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
| 5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
| 6 */ | 6 */ |
| 7 | 7 |
| 8 #include "SkMallocPixelRef.h" | 8 #include "SkMallocPixelRef.h" |
| 9 #include "SkBitmap.h" | 9 #include "SkBitmap.h" |
| 10 #include "SkReadBuffer.h" | 10 #include "SkReadBuffer.h" |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 46 } | 46 } |
| 47 return SkNEW_ARGS(SkMallocPixelRef, | 47 return SkNEW_ARGS(SkMallocPixelRef, |
| 48 (info, addr, rowBytes, ctable, NULL, NULL)); | 48 (info, addr, rowBytes, ctable, NULL, NULL)); |
| 49 } | 49 } |
| 50 | 50 |
| 51 | 51 |
| 52 SkMallocPixelRef* SkMallocPixelRef::NewAllocate(const SkImageInfo& info, | 52 SkMallocPixelRef* SkMallocPixelRef::NewAllocate(const SkImageInfo& info, |
| 53 size_t requestedRowBytes, | 53 size_t requestedRowBytes, |
| 54 SkColorTable* ctable) { | 54 SkColorTable* ctable) { |
| 55 if (!is_valid(info, ctable)) { | 55 if (!is_valid(info, ctable)) { |
| 56 SkDebugf("failing 1\n"); | |
|
scroggo
2015/06/30 20:50:04
I think you didn't mean to include the changes to
| |
| 56 return NULL; | 57 return NULL; |
| 57 } | 58 } |
| 58 | 59 |
| 59 // only want to permit 31bits of rowBytes | 60 // only want to permit 31bits of rowBytes |
| 60 int64_t minRB = (int64_t)info.minRowBytes64(); | 61 int64_t minRB = (int64_t)info.minRowBytes64(); |
| 61 if (minRB < 0 || !sk_64_isS32(minRB)) { | 62 if (minRB < 0 || !sk_64_isS32(minRB)) { |
| 63 SkDebugf("failing 2\n"); | |
| 62 return NULL; // allocation will be too large | 64 return NULL; // allocation will be too large |
| 63 } | 65 } |
| 64 if (requestedRowBytes > 0 && (int32_t)requestedRowBytes < minRB) { | 66 if (requestedRowBytes > 0 && (int32_t)requestedRowBytes < minRB) { |
| 67 SkDebugf("failing 3\n"); | |
| 65 return NULL; // cannot meet requested rowbytes | 68 return NULL; // cannot meet requested rowbytes |
| 66 } | 69 } |
| 67 | 70 |
| 68 int32_t rowBytes; | 71 int32_t rowBytes; |
| 69 if (requestedRowBytes) { | 72 if (requestedRowBytes) { |
| 70 rowBytes = SkToS32(requestedRowBytes); | 73 rowBytes = SkToS32(requestedRowBytes); |
| 71 } else { | 74 } else { |
| 72 rowBytes = minRB; | 75 rowBytes = minRB; |
| 73 } | 76 } |
| 74 | 77 |
| 75 int64_t bigSize = (int64_t)info.height() * rowBytes; | 78 int64_t bigSize = (int64_t)info.height() * rowBytes; |
| 76 if (!sk_64_isS32(bigSize)) { | 79 if (!sk_64_isS32(bigSize)) { |
| 80 SkDebugf("failing 4\n"); | |
| 77 return NULL; | 81 return NULL; |
| 78 } | 82 } |
| 79 | 83 |
| 80 size_t size = sk_64_asS32(bigSize); | 84 size_t size = sk_64_asS32(bigSize); |
| 81 SkASSERT(size >= info.getSafeSize(rowBytes)); | 85 SkASSERT(size >= info.getSafeSize(rowBytes)); |
| 82 void* addr = sk_malloc_flags(size, 0); | 86 void* addr = sk_malloc_flags(size, 0); |
| 83 if (NULL == addr) { | 87 if (NULL == addr) { |
| 88 SkDebugf("failing 5\n"); | |
| 84 return NULL; | 89 return NULL; |
| 85 } | 90 } |
| 86 | 91 |
| 87 return SkNEW_ARGS(SkMallocPixelRef, | 92 return SkNEW_ARGS(SkMallocPixelRef, |
| 88 (info, addr, rowBytes, ctable, | 93 (info, addr, rowBytes, ctable, |
| 89 sk_free_releaseproc, NULL)); | 94 sk_free_releaseproc, NULL)); |
| 90 } | 95 } |
| 91 | 96 |
| 92 SkMallocPixelRef* SkMallocPixelRef::NewWithProc(const SkImageInfo& info, | 97 SkMallocPixelRef* SkMallocPixelRef::NewWithProc(const SkImageInfo& info, |
| 93 size_t rowBytes, | 98 size_t rowBytes, |
| (...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 199 size_t SkMallocPixelRef::getAllocatedSizeInBytes() const { | 204 size_t SkMallocPixelRef::getAllocatedSizeInBytes() const { |
| 200 return this->info().getSafeSize(fRB); | 205 return this->info().getSafeSize(fRB); |
| 201 } | 206 } |
| 202 | 207 |
| 203 /////////////////////////////////////////////////////////////////////////////// | 208 /////////////////////////////////////////////////////////////////////////////// |
| 204 | 209 |
| 205 SkPixelRef* SkMallocPixelRef::PRFactory::create(const SkImageInfo& info, size_t rowBytes, | 210 SkPixelRef* SkMallocPixelRef::PRFactory::create(const SkImageInfo& info, size_t rowBytes, |
| 206 SkColorTable* ctable) { | 211 SkColorTable* ctable) { |
| 207 return SkMallocPixelRef::NewAllocate(info, rowBytes, ctable); | 212 return SkMallocPixelRef::NewAllocate(info, rowBytes, ctable); |
| 208 } | 213 } |
| OLD | NEW |