|
|
|
@ -108,7 +108,7 @@ RECENT REVISION HISTORY: |
|
|
|
|
Cass Everitt Ryamond Barbiero github:grim210 |
|
|
|
|
Paul Du Bois Engin Manap Aldo Culquicondor github:sammyhw |
|
|
|
|
Philipp Wiesemann Dale Weiler Oriol Ferrer Mesia github:phprus |
|
|
|
|
Josh Tobin Matthew Gregan github:poppolopoppo |
|
|
|
|
Josh Tobin Neil Bickford Matthew Gregan github:poppolopoppo |
|
|
|
|
Julian Raschke Gregory Mullen Christian Floisand github:darealshinji |
|
|
|
|
Baldur Karlsson Kevin Schmidt JR Smith github:Michaelangel007 |
|
|
|
|
Brad Weinberger Matvey Cherevko github:mosra |
|
|
|
@ -7187,12 +7187,12 @@ static float *stbi__hdr_load(stbi__context *s, int *x, int *y, int *comp, int re |
|
|
|
|
// Run
|
|
|
|
|
value = stbi__get8(s); |
|
|
|
|
count -= 128; |
|
|
|
|
if (count > nleft) { STBI_FREE(hdr_data); STBI_FREE(scanline); return stbi__errpf("corrupt", "bad RLE data in HDR"); } |
|
|
|
|
if ((count == 0) || (count > nleft)) { STBI_FREE(hdr_data); STBI_FREE(scanline); return stbi__errpf("corrupt", "bad RLE data in HDR"); } |
|
|
|
|
for (z = 0; z < count; ++z) |
|
|
|
|
scanline[i++ * 4 + k] = value; |
|
|
|
|
} else { |
|
|
|
|
// Dump
|
|
|
|
|
if (count > nleft) { STBI_FREE(hdr_data); STBI_FREE(scanline); return stbi__errpf("corrupt", "bad RLE data in HDR"); } |
|
|
|
|
if ((count == 0) || (count > nleft)) { STBI_FREE(hdr_data); STBI_FREE(scanline); return stbi__errpf("corrupt", "bad RLE data in HDR"); } |
|
|
|
|
for (z = 0; z < count; ++z) |
|
|
|
|
scanline[i++ * 4 + k] = stbi__get8(s); |
|
|
|
|
} |
|
|
|
@ -7446,10 +7446,17 @@ static void *stbi__pnm_load(stbi__context *s, int *x, int *y, int *comp, int req |
|
|
|
|
|
|
|
|
|
out = (stbi_uc *) stbi__malloc_mad4(s->img_n, s->img_x, s->img_y, ri->bits_per_channel / 8, 0); |
|
|
|
|
if (!out) return stbi__errpuc("outofmem", "Out of memory"); |
|
|
|
|
stbi__getn(s, out, s->img_n * s->img_x * s->img_y * (ri->bits_per_channel / 8)); |
|
|
|
|
if (!stbi__getn(s, out, s->img_n * s->img_x * s->img_y * (ri->bits_per_channel / 8))) { |
|
|
|
|
STBI_FREE(out); |
|
|
|
|
return stbi__errpuc("bad PNM", "PNM file truncated"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (req_comp && req_comp != s->img_n) { |
|
|
|
|
out = stbi__convert_format(out, s->img_n, req_comp, s->img_x, s->img_y); |
|
|
|
|
if (ri->bits_per_channel == 16) { |
|
|
|
|
out = (stbi_uc *) stbi__convert_format16((stbi__uint16 *) out, s->img_n, req_comp, s->img_x, s->img_y); |
|
|
|
|
} else { |
|
|
|
|
out = stbi__convert_format(out, s->img_n, req_comp, s->img_x, s->img_y); |
|
|
|
|
} |
|
|
|
|
if (out == NULL) return out; // stbi__convert_format frees input on failure
|
|
|
|
|
} |
|
|
|
|
return out; |
|
|
|
|