WebPGetFeatures() behavior change:

It should return VP8_STATUS_NOT_ENOUGH_DATA when it doesn't have enough
data.

Change-Id: I5acff04f9ba51dab150dc6d137c5ad00ea61c64a
This commit is contained in:
Urvang Joshi 2013-02-27 15:27:43 -08:00
parent df02e4ce93
commit 956b217a8b
2 changed files with 4 additions and 9 deletions

View File

@ -672,19 +672,13 @@ int WebPInitDecoderConfigInternal(WebPDecoderConfig* config,
VP8StatusCode WebPGetFeaturesInternal(const uint8_t* data, size_t data_size, VP8StatusCode WebPGetFeaturesInternal(const uint8_t* data, size_t data_size,
WebPBitstreamFeatures* features, WebPBitstreamFeatures* features,
int version) { int version) {
VP8StatusCode status;
if (WEBP_ABI_IS_INCOMPATIBLE(version, WEBP_DECODER_ABI_VERSION)) { if (WEBP_ABI_IS_INCOMPATIBLE(version, WEBP_DECODER_ABI_VERSION)) {
return VP8_STATUS_INVALID_PARAM; // version mismatch return VP8_STATUS_INVALID_PARAM; // version mismatch
} }
if (features == NULL) { if (features == NULL) {
return VP8_STATUS_INVALID_PARAM; return VP8_STATUS_INVALID_PARAM;
} }
return GetFeatures(data, data_size, features);
status = GetFeatures(data, data_size, features);
if (status == VP8_STATUS_NOT_ENOUGH_DATA) {
return VP8_STATUS_BITSTREAM_ERROR; // Not-enough-data treated as error.
}
return status;
} }
VP8StatusCode WebPDecode(const uint8_t* data, size_t data_size, VP8StatusCode WebPDecode(const uint8_t* data, size_t data_size,

View File

@ -411,8 +411,9 @@ WEBP_EXTERN(VP8StatusCode) WebPGetFeaturesInternal(
// Retrieve features from the bitstream. The *features structure is filled // Retrieve features from the bitstream. The *features structure is filled
// with information gathered from the bitstream. // with information gathered from the bitstream.
// Returns false in case of error or version mismatch. // Returns VP8_STATUS_OK when the features are successfully retrieved. Returns
// In case of error, features->bitstream_status will reflect the error code. // VP8_STATUS_NOT_ENOUGH_DATA when more data is needed to retrieved the
// features. Returns error in other cases.
static WEBP_INLINE VP8StatusCode WebPGetFeatures( static WEBP_INLINE VP8StatusCode WebPGetFeatures(
const uint8_t* data, size_t data_size, const uint8_t* data, size_t data_size,
WebPBitstreamFeatures* features) { WebPBitstreamFeatures* features) {