Merge changes I46090628,I1a41b2ce into 0.2.0

* changes:
  check VP8LBitWriterInit return
  lossless: fix crash on user abort
This commit is contained in:
James Zern 2012-08-01 13:19:32 -07:00 committed by Gerrit Code Review
commit d4b4bb0248
2 changed files with 9 additions and 4 deletions

View File

@ -84,8 +84,8 @@ static int EncodeLossless(const uint8_t* const data, int width, int height,
config.quality = 10.f + 15.f * effort_level; config.quality = 10.f + 15.f * effort_level;
if (config.quality > 100.f) config.quality = 100.f; if (config.quality > 100.f) config.quality = 100.f;
VP8LBitWriterInit(&tmp_bw, (width * height) >> 3); ok = VP8LBitWriterInit(&tmp_bw, (width * height) >> 3);
ok = (VP8LEncodeStream(&config, &picture, &tmp_bw) == VP8_ENC_OK); ok = ok && (VP8LEncodeStream(&config, &picture, &tmp_bw) == VP8_ENC_OK);
WebPPictureFree(&picture); WebPPictureFree(&picture);
if (ok) { if (ok) {
const uint8_t* const data = VP8LBitWriterFinish(&tmp_bw); const uint8_t* const data = VP8LBitWriterFinish(&tmp_bw);

View File

@ -1050,11 +1050,17 @@ int VP8LEncodeImage(const WebPConfig* const config,
if (config == NULL || picture->argb == NULL) { if (config == NULL || picture->argb == NULL) {
err = VP8_ENC_ERROR_NULL_PARAMETER; err = VP8_ENC_ERROR_NULL_PARAMETER;
goto Error; WebPEncodingSetError(picture, err);
return 0;
} }
width = picture->width; width = picture->width;
height = picture->height; height = picture->height;
if (!VP8LBitWriterInit(&bw, (width * height) >> 1)) {
err = VP8_ENC_ERROR_OUT_OF_MEMORY;
goto Error;
}
if (!WebPReportProgress(picture, 1, &percent)) { if (!WebPReportProgress(picture, 1, &percent)) {
UserAbort: UserAbort:
err = VP8_ENC_ERROR_USER_ABORT; err = VP8_ENC_ERROR_USER_ABORT;
@ -1072,7 +1078,6 @@ int VP8LEncodeImage(const WebPConfig* const config,
} }
// Write image size. // Write image size.
VP8LBitWriterInit(&bw, (width * height) >> 1);
if (!WriteImageSize(picture, &bw)) { if (!WriteImageSize(picture, &bw)) {
err = VP8_ENC_ERROR_OUT_OF_MEMORY; err = VP8_ENC_ERROR_OUT_OF_MEMORY;
goto Error; goto Error;