summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/pnmcurve.c12
1 files changed, 5 insertions, 7 deletions
diff --git a/src/pnmcurve.c b/src/pnmcurve.c
index 4ddbc5c..7910536 100644
--- a/src/pnmcurve.c
+++ b/src/pnmcurve.c
@@ -66,17 +66,17 @@ main(int argc, char **argv) {
if (!curve) {
usage();
- exit(1);
+ return 1;
}
if (readPnmHeader(stdin, &in_pnm) != 0) {
fprintf(stderr, "failed to read PNM file\n");
- exit(1);
+ return 1;
}
if (in_pnm.maxval != 255 && in_pnm.maxval != 65535) {
fprintf(stderr, "unsupported PNM maxval %d\n", in_pnm.maxval);
- exit(1);
+ return 1;
}
if (channels == 0) channels = RED | GREEN | BLUE;
@@ -94,9 +94,7 @@ main(int argc, char **argv) {
writePnmHeader(stdout, &in_pnm);
- pam_transform(stdin, stdout, &in_pnm, gTable);
-
- return 0;
+ return pam_transform(stdin, stdout, &in_pnm, gTable);
}
static int
@@ -107,7 +105,7 @@ pam_transform(FILE *in_fp, FILE *out_fp,
unsigned char *buf = malloc(in_pnm->width * nbytes * 3);
for (c = 0; c < 3; c++) {
- if (tables[c] && tables[c]->n <= in_pnm->maxval) {
+ if (tables[c] && tables[c]->n < 1 << (nbytes * 8)) {
fprintf(stderr, "table %d too small (%d)\n", c, tables[c]->n);
return 1;
}