Disable F16-nullptr sources
Also includes the refactor that triggered this change - stricter
checking on creation on raster SkImages.
Bug: skia:
Change-Id: Ie3216ac3f5307de4b78792b472676faa51e5459d
Reviewed-on: https://skia-review.googlesource.com/19040
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Matt Sarett <msarett@google.com>
diff --git a/src/image/SkImage_Raster.cpp b/src/image/SkImage_Raster.cpp
index f4f1211..5b55c44 100644
--- a/src/image/SkImage_Raster.cpp
+++ b/src/image/SkImage_Raster.cpp
@@ -13,6 +13,7 @@
#include "SkColorSpaceXformPriv.h"
#include "SkColorTable.h"
#include "SkData.h"
+#include "SkImageInfoPriv.h"
#include "SkImagePriv.h"
#include "SkPixelRef.h"
#include "SkSurface.h"
@@ -301,25 +302,23 @@
return sk_make_sp<SkImage_Raster>(pmap.info(), std::move(data), pmap.rowBytes(), pmap.ctable());
}
-sk_sp<SkImage> SkMakeImageFromRasterBitmap(const SkBitmap& bm, SkCopyPixelsMode cpm) {
- bool hasColorTable = false;
- if (kIndex_8_SkColorType == bm.colorType()) {
- hasColorTable = bm.getColorTable() != nullptr;
+sk_sp<SkImage> SkMakeImageFromRasterBitmapPriv(const SkBitmap& bm, SkCopyPixelsMode cpm) {
+ if (kAlways_SkCopyPixelsMode == cpm || (!bm.isImmutable() && kNever_SkCopyPixelsMode != cpm)) {
+ SkPixmap pmap;
+ SkAssertResult(bm.peekPixels(&pmap));
+ return SkImage::MakeRasterCopy(pmap);
}
- if (!SkImage_Raster::ValidArgs(bm.info(), bm.rowBytes(), hasColorTable, nullptr)) {
+ return sk_make_sp<SkImage_Raster>(bm, kNever_SkCopyPixelsMode == cpm);
+}
+
+sk_sp<SkImage> SkMakeImageFromRasterBitmap(const SkBitmap& bm, SkCopyPixelsMode cpm) {
+ if (!SkImageInfoIsValidAllowNumericalCS(bm.info()) || !bm.getPixels() ||
+ bm.rowBytes() < bm.info().minRowBytes()) {
return nullptr;
}
- if (kAlways_SkCopyPixelsMode == cpm || (!bm.isImmutable() && kNever_SkCopyPixelsMode != cpm)) {
- SkPixmap pmap;
- if (bm.getPixels() && bm.peekPixels(&pmap)) {
- return SkImage::MakeRasterCopy(pmap);
- }
- } else {
- return sk_make_sp<SkImage_Raster>(bm, kNever_SkCopyPixelsMode == cpm);
- }
- return sk_sp<SkImage>();
+ return SkMakeImageFromRasterBitmapPriv(bm, cpm);
}
const SkPixelRef* SkBitmapImageGetPixelRef(const SkImage* image) {