| Index: src/core/SkImageFilter.cpp
 | 
| diff --git a/src/core/SkImageFilter.cpp b/src/core/SkImageFilter.cpp
 | 
| index e999d3aebb3ef885b0ea82926a11eb7319c76190..3b4ad314563217ded15baa1756d36f63ce7aa960 100644
 | 
| --- a/src/core/SkImageFilter.cpp
 | 
| +++ b/src/core/SkImageFilter.cpp
 | 
| @@ -105,22 +105,14 @@ static int32_t next_image_filter_unique_id() {
 | 
|      return id;
 | 
|  }
 | 
|  
 | 
| -SkImageFilter::Common::~Common() {
 | 
| -    for (int i = 0; i < fInputs.count(); ++i) {
 | 
| -        SkSafeUnref(fInputs[i]);
 | 
| -    }
 | 
| -}
 | 
| -
 | 
|  void SkImageFilter::Common::allocInputs(int count) {
 | 
| -    const size_t size = count * sizeof(SkImageFilter*);
 | 
|      fInputs.reset(count);
 | 
| -    sk_bzero(fInputs.get(), size);
 | 
|  }
 | 
|  
 | 
|  void SkImageFilter::Common::detachInputs(SkImageFilter** inputs) {
 | 
| -    const size_t size = fInputs.count() * sizeof(SkImageFilter*);
 | 
| -    memcpy(inputs, fInputs.get(), size);
 | 
| -    sk_bzero(fInputs.get(), size);
 | 
| +    for (int i = 0; i < fInputs.count(); ++i) {
 | 
| +        inputs[i] = fInputs[i].release();
 | 
| +    }
 | 
|  }
 | 
|  
 | 
|  bool SkImageFilter::Common::unflatten(SkReadBuffer& buffer, int expectedCount) {
 | 
| @@ -135,7 +127,7 @@ bool SkImageFilter::Common::unflatten(SkReadBuffer& buffer, int expectedCount) {
 | 
|      this->allocInputs(count);
 | 
|      for (int i = 0; i < count; i++) {
 | 
|          if (buffer.readBool()) {
 | 
| -            fInputs[i] = buffer.readImageFilter();
 | 
| +            fInputs[i] = sk_sp<SkImageFilter>(buffer.readImageFilter());
 | 
|          }
 | 
|          if (!buffer.isValid()) {
 | 
|              return false;
 | 
| 
 |