| OLD | NEW | 
|---|
| 1 /* | 1 /* | 
| 2  * Copyright 2012 Google Inc. | 2  * Copyright 2012 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 "SkBitmap.h" | 8 #include "SkBitmap.h" | 
| 9 #include "SkErrorInternals.h" | 9 #include "SkErrorInternals.h" | 
| 10 #include "SkImage.h" | 10 #include "SkImage.h" | 
| (...skipping 338 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 349         factory = fFactoryArray[index]; | 349         factory = fFactoryArray[index]; | 
| 350     } else { | 350     } else { | 
| 351         factory = (SkFlattenable::Factory)readFunctionPtr(); | 351         factory = (SkFlattenable::Factory)readFunctionPtr(); | 
| 352         if (nullptr == factory) { | 352         if (nullptr == factory) { | 
| 353             return nullptr; // writer failed to give us the flattenable | 353             return nullptr; // writer failed to give us the flattenable | 
| 354         } | 354         } | 
| 355     } | 355     } | 
| 356 | 356 | 
| 357     // if we get here, factory may still be null, but if that is the case, the | 357     // if we get here, factory may still be null, but if that is the case, the | 
| 358     // failure was ours, not the writer. | 358     // failure was ours, not the writer. | 
| 359     SkFlattenable* obj = nullptr; | 359     sk_sp<SkFlattenable> obj; | 
| 360     uint32_t sizeRecorded = fReader.readU32(); | 360     uint32_t sizeRecorded = fReader.readU32(); | 
| 361     if (factory) { | 361     if (factory) { | 
| 362         size_t offset = fReader.offset(); | 362         size_t offset = fReader.offset(); | 
| 363         obj = (*factory)(*this); | 363         obj = (*factory)(*this); | 
| 364         // check that we read the amount we expected | 364         // check that we read the amount we expected | 
| 365         size_t sizeRead = fReader.offset() - offset; | 365         size_t sizeRead = fReader.offset() - offset; | 
| 366         if (sizeRecorded != sizeRead) { | 366         if (sizeRecorded != sizeRead) { | 
| 367             this->validate(false); | 367             this->validate(false); | 
| 368             return nullptr; | 368             return nullptr; | 
| 369         } | 369         } | 
| 370     } else { | 370     } else { | 
| 371         // we must skip the remaining data | 371         // we must skip the remaining data | 
| 372         fReader.skip(sizeRecorded); | 372         fReader.skip(sizeRecorded); | 
| 373     } | 373     } | 
| 374     return obj; | 374     return obj.release(); | 
| 375 } | 375 } | 
| 376 | 376 | 
| 377 /** | 377 /** | 
| 378  *  Needs to follow the same pattern as readFlattenable(), but explicitly skip w
     hatever data | 378  *  Needs to follow the same pattern as readFlattenable(), but explicitly skip w
     hatever data | 
| 379  *  has been written. | 379  *  has been written. | 
| 380  */ | 380  */ | 
| 381 void SkReadBuffer::skipFlattenable() { | 381 void SkReadBuffer::skipFlattenable() { | 
| 382     if (fFactoryCount > 0) { | 382     if (fFactoryCount > 0) { | 
| 383         if (0 == fReader.readU32()) { | 383         if (0 == fReader.readU32()) { | 
| 384             return; | 384             return; | 
| 385         } | 385         } | 
| 386     } else { | 386     } else { | 
| 387         if (nullptr == this->readFunctionPtr()) { | 387         if (nullptr == this->readFunctionPtr()) { | 
| 388             return; | 388             return; | 
| 389         } | 389         } | 
| 390     } | 390     } | 
| 391     uint32_t sizeRecorded = fReader.readU32(); | 391     uint32_t sizeRecorded = fReader.readU32(); | 
| 392     fReader.skip(sizeRecorded); | 392     fReader.skip(sizeRecorded); | 
| 393 } | 393 } | 
| OLD | NEW | 
|---|