| Index: src/pdf/SkPDFBitmap.cpp
 | 
| diff --git a/src/pdf/SkPDFBitmap.cpp b/src/pdf/SkPDFBitmap.cpp
 | 
| index fdc33032a9c793d0ada23d4fdd6d5863599775b8..5e617decf4feb749d510975020fa2836bd64b6ec 100644
 | 
| --- a/src/pdf/SkPDFBitmap.cpp
 | 
| +++ b/src/pdf/SkPDFBitmap.cpp
 | 
| @@ -382,13 +382,14 @@ namespace {
 | 
|  // This SkPDFObject only outputs the alpha layer of the given bitmap.
 | 
|  class PDFAlphaBitmap final : public SkPDFObject {
 | 
|  public:
 | 
| -    PDFAlphaBitmap(const SkImage* image) : fImage(SkRef(image)) {}
 | 
| -    ~PDFAlphaBitmap() {}
 | 
| +    PDFAlphaBitmap(const SkImage* image) : fImage(SkRef(image)) { SkASSERT(image); }
 | 
|      void emitObject(SkWStream*  stream,
 | 
|                      const SkPDFObjNumMap& objNumMap,
 | 
|                      const SkPDFSubstituteMap& subs) const override {
 | 
| +        SkASSERT(fImage);
 | 
|          emit_image_xobject(stream, fImage.get(), true, nullptr, objNumMap, subs);
 | 
|      }
 | 
| +    void drop() override { fImage = nullptr; }
 | 
|  
 | 
|  private:
 | 
|      sk_sp<const SkImage> fImage;
 | 
| @@ -404,22 +405,25 @@ public:
 | 
|      void emitObject(SkWStream* stream,
 | 
|                      const SkPDFObjNumMap& objNumMap,
 | 
|                      const SkPDFSubstituteMap& subs) const override {
 | 
| +        SkASSERT(fImage);
 | 
|          emit_image_xobject(stream, fImage.get(), false, fSMask, objNumMap, subs);
 | 
|      }
 | 
|      void addResources(SkPDFObjNumMap* catalog,
 | 
|                        const SkPDFSubstituteMap& subs) const override {
 | 
| +        SkASSERT(fImage);
 | 
|          if (fSMask.get()) {
 | 
|              SkPDFObject* obj = subs.getSubstitute(fSMask.get());
 | 
|              SkASSERT(obj);
 | 
|              catalog->addObjectRecursively(obj, subs);
 | 
|          }
 | 
|      }
 | 
| +    void drop() override { fImage = nullptr; fSMask = nullptr; }
 | 
|      PDFDefaultBitmap(const SkImage* image, SkPDFObject* smask)
 | 
| -        : fImage(SkRef(image)), fSMask(smask) {}
 | 
| +        : fImage(SkRef(image)), fSMask(smask) { SkASSERT(fImage); }
 | 
|  
 | 
|  private:
 | 
|      sk_sp<const SkImage> fImage;
 | 
| -    const sk_sp<SkPDFObject> fSMask;
 | 
| +    sk_sp<SkPDFObject> fSMask;
 | 
|  };
 | 
|  }  // namespace
 | 
|  
 | 
| @@ -437,15 +441,17 @@ public:
 | 
|      sk_sp<SkData> fData;
 | 
|      bool fIsYUV;
 | 
|      PDFJpegBitmap(SkISize size, SkData* data, bool isYUV)
 | 
| -        : fSize(size), fData(SkRef(data)), fIsYUV(isYUV) {}
 | 
| +        : fSize(size), fData(SkRef(data)), fIsYUV(isYUV) { SkASSERT(data); }
 | 
|      void emitObject(SkWStream*,
 | 
|                      const SkPDFObjNumMap&,
 | 
|                      const SkPDFSubstituteMap&) const override;
 | 
| +    void drop() override { fData = nullptr; }
 | 
|  };
 | 
|  
 | 
|  void PDFJpegBitmap::emitObject(SkWStream* stream,
 | 
|                                 const SkPDFObjNumMap& objNumMap,
 | 
|                                 const SkPDFSubstituteMap& substituteMap) const {
 | 
| +    SkASSERT(fData);
 | 
|      SkPDFDict pdfDict("XObject");
 | 
|      pdfDict.insertName("Subtype", "Image");
 | 
|      pdfDict.insertInt("Width", fSize.width());
 | 
| 
 |