mirror of
				https://github.com/webmproject/libwebp.git
				synced 2025-10-31 10:25:46 +01:00 
			
		
		
		
	Merge changes I46090628,I1a41b2ce into 0.2.0
* changes: check VP8LBitWriterInit return lossless: fix crash on user abort
This commit is contained in:
		| @@ -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); | ||||||
|   | |||||||
| @@ -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; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user