fix: correct write count in savePPM

Previously, the `fwrite` call always returned 3 if it succeeded, and so `savePPM` would return 1 even if the entire pixel buffer was successfully written to file (except in the trivial case `sx * sy == 1`). This changes `savePPM` to return 0 if it was successful.
This commit is contained in:
Alex Chew 2022-07-17 11:09:29 -07:00 committed by GitHub
parent 91ba293616
commit 629e68cabf
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

5
util.c
View File

@ -470,9 +470,10 @@ int savePPM(const char *path, const unsigned char *pixels, const unsigned int sx
if (!fp)
return -1;
fprintf(fp, "P6\n%d %d\n255\n", sx, sy);
int written = fwrite(pixels, sx*sy, 3, fp);
size_t pixelsLen = 3 * sx * sy;
size_t written = fwrite(pixels, sizeof pixels[0], pixelsLen, fp);
fclose(fp);
return (unsigned int)written != 3*sx*sy;
return written != pixelsLen;
}