diff --git a/src/mux/muxread.c b/src/mux/muxread.c index 2363dffc..935a7b35 100644 --- a/src/mux/muxread.c +++ b/src/mux/muxread.c @@ -230,8 +230,8 @@ WebPMuxError WebPMuxGetImage(const WebPMux* const mux, WebPMuxError err; WebPMuxImage* wpi = NULL; - if (mux == NULL || image == NULL) return WEBP_MUX_INVALID_ARGUMENT; - memset(image, 0, sizeof(*image)); + if (mux == NULL || (image == NULL && alpha == NULL)) + return WEBP_MUX_INVALID_ARGUMENT; err = ValidateForImage(mux); if (err != WEBP_MUX_OK) return err; @@ -250,9 +250,12 @@ WebPMuxError WebPMuxGetImage(const WebPMux* const mux, } // Get image chunk. - if (wpi->vp8_ != NULL) { - image->bytes_ = wpi->vp8_->data_; - image->size_ = wpi->vp8_->payload_size_; + if (image != NULL) { + memset(image, 0, sizeof(*image)); + if (wpi->vp8_ != NULL) { + image->bytes_ = wpi->vp8_->data_; + image->size_ = wpi->vp8_->payload_size_; + } } return WEBP_MUX_OK; } diff --git a/src/webp/mux.h b/src/webp/mux.h index 4dc9b3b0..2bf1baa1 100644 --- a/src/webp/mux.h +++ b/src/webp/mux.h @@ -149,8 +149,8 @@ WEBP_EXTERN(WebPMuxError) WebPMuxSetImage( // image - (out) the image data // alpha - (out) the alpha data of the image (if present) // Returns: -// WEBP_MUX_INVALID_ARGUMENT - if either mux or image is NULL -// OR if mux contains animation/tiling. +// WEBP_MUX_INVALID_ARGUMENT - if either mux or both image & alpha are NULL +// OR mux contains animation/tiling. // WEBP_MUX_NOT_FOUND - if image is not present in mux object. // WEBP_MUX_OK - on success. WEBP_EXTERN(WebPMuxError) WebPMuxGetImage(const WebPMux* const mux,