Based on the feedback from Christophe, this patch is adding some error code report for webp module.
Patch is inlined and enclosed.
regards,
david
---
wrlib/load_webp.c | 18 +++++++++++++-----
1 file changed, 13 insertions(+), 5 deletions(-)
diff --git a/wrlib/load_webp.c b/wrlib/load_webp.c
index d69a107..9364332 100644
--- a/wrlib/load_webp.c
+++ b/wrlib/load_webp.c
@@ -58,7 +58,6 @@ RLoadWEBP(const char *file_name)
return NULL;
}
-
if (!(buffer[0] == 'R' &&
buffer[1] == 'I' &&
buffer[2] == 'F' &&
@@ -78,12 +77,12 @@ RLoadWEBP(const char *file_name)
return NULL;
}
-
fseek(file, 0, SEEK_END);
raw_data_size = ftell(file);
if (raw_data_size <= 0) {
fprintf(stderr, "Failed to find the WEBP image size\n");
+ RErrorCode = RERR_BADIMAGEFILE;
return NULL;
}
@@ -92,7 +91,8 @@ RLoadWEBP(const char *file_name)
raw_data = (uint8_t *) malloc(raw_data_size);
if (!raw_data) {
- fprintf(stderr, "Failed to allocate enought buffer for WEBP\n");
+ fprintf(stderr, "Failed to allocate enough buffer for WEBP\n");
+ RErrorCode = RERR_NOMEMORY;
return NULL;
}
@@ -100,27 +100,33 @@ RLoadWEBP(const char *file_name)
if (r != raw_data_size) {
fprintf(stderr, "Failed to read WEBP\n");
+ RErrorCode = RERR_READ;
return NULL;
}
if (WebPGetFeatures(raw_data, raw_data_size, &features) !=
VP8_STATUS_OK) {
fprintf(stderr, "WebPGetFeatures has failed\n");
+ RErrorCode = RERR_BADIMAGEFILE;
return NULL;
}
if (features.has_alpha) {
image = RCreateImage(features.width, features.height, True);
- if (!image)
+ if (!image) {
+ RErrorCode = RERR_NOMEMORY;
return NULL;
+ }
ret =
WebPDecodeRGBAInto(raw_data, raw_data_size, image->data,
features.width * features.height * 4,
features.width * 4);
} else {
image = RCreateImage(features.width, features.height, False);
- if (!image)
+ if (!image) {
+ RErrorCode = RERR_NOMEMORY;
return NULL;
+ }
ret =
WebPDecodeRGBInto(raw_data, raw_data_size, image->data,
features.width * features.height * 3,
@@ -129,6 +135,8 @@ RLoadWEBP(const char *file_name)
if (!ret) {
fprintf(stderr, "Failed to decode WEBP\n");
+ RErrorCode = RERR_BADIMAGEFILE;
+ RReleaseImage(image);
return NULL;
}
--
1.7.10.4
0001-Added-support-for-webp-image.patch
Description: Binary data
