Commit c581fe5f authored by André Anjos's avatar André Anjos

Merge branch 'issue-30' into 'master'

Add tests to detect the problem reported on this issue Closes #30 See merge request !36
parents 3813cbcb ab2e9b94
Pipeline #18298 failed with stages
in 27 minutes 42 seconds
......@@ -117,16 +117,8 @@ pm_openw(const char * const name) {
void
pm_close(FILE * const f) {
// fprintf(stderr, "I am closing a file\n");
fflush( f );
// if ( ferror( f ) )
// boost::format m("a file read or write error occurred at some point");
// throw std::runtime_error(m.str());
if ( f != stdin )
fclose( f );
// if ( fclose( f ) != 0 )
// boost::format m("cannot close file.");
// throw std::runtime_error(m.str());
fflush(f);
if (f != stdin) fclose( f );
}
static boost::shared_ptr<std::FILE> make_cfile(const char *filename, const char *flags)
......@@ -168,12 +160,12 @@ static void pnm_readpaminit(FILE *file, struct pam * const pamP, const int size)
if (img_colors >> 8 == 0) pamP->bytes_per_sample = 1;
else if (img_colors >> 16 == 0) pamP->bytes_per_sample = 2;
} else {
boost::format m("Unknown PNM/PFM image format.");
boost::format m("pnm_readpaminit(): Unknown PNM/PFM image format.");
throw std::runtime_error(m.str());
}
if (read_err != 0) {
boost::format m("Something went wrong when reading the image file.");
boost::format m("pnm_readpaminit(): Something went wrong when reading the image file.");
throw std::runtime_error(m.str());
}
......@@ -214,7 +206,7 @@ static void pnm_readpam(struct pam * const pamP, int *img_data) {
}
if (read_err != 0) {
boost::format m("Something went wrong when reading the image file.");
boost::format m("pnm_readpam(): Something went wrong when reading the image file.");
throw std::runtime_error(m.str());
}
}
......@@ -240,7 +232,7 @@ static void pnm_writepam(struct pam * const pamP, int *img_data) {
}
if (write_err != 0) {
boost::format m("Something went wrong when writing the image file.");
boost::format m("pnm_writepam(): Something went wrong when writing the image file.");
throw std::runtime_error(m.str());
}
}
......
......@@ -309,13 +309,13 @@ int read_pbm_data(FILE *f, int *img_in, int img_size, int is_ascii, int img_widt
if (is_ascii == 1) {
read_count = fscanf(f, "%d", &lum_val);
if (read_count < 1) return -1;
if (i >= img_size) return -1;
if (i >= img_size) break;
img_in[i++] = lum_val;
} else {
lum_val = fgetc(f);
/* Decode the image contents byte-by-byte. */
for (k = 0; k < 8; k++) {
if (i >= img_size) return -1;
if (i >= img_size) break;
img_in[i++] = (lum_val >> (7-k)) & 0x1;
// fprintf(stderr, "i: %d, %d\n", i, img_in[i]);
row_position++;
......@@ -355,7 +355,7 @@ int read_pgm_data(FILE *f, int *img_in, int img_size, int is_ascii,
lum_val |= fgetc(f);
}
}
if (i >= img_size) return -1;
if (i >= img_size) break;
img_in[i++] = lum_val;
}
// fclose(f);
......@@ -397,7 +397,7 @@ int read_ppm_data(FILE *f, int *img_in, int img_size, int is_ascii,
b_val |= fgetc(f);
}
}
if (i >= img_size) return -1;
if (i >= img_size) break;
img_in[i++] = r_val;
img_in[i++] = g_val;
img_in[i++] = b_val;
......
......@@ -107,7 +107,7 @@ def test_netpbm():
def test_image_load():
# test that the generic bob.io.image.load function works as expected
for filename in ('test.jpg', 'cmyk.jpg', 'test.pbm', 'test.pgm', 'test.ppm', 'img_rgba_color.png'):
for filename in ('test.jpg', 'cmyk.jpg', 'test.pbm', 'test_corrupted.pbm', 'test.pgm', 'test_corrupted.pgm', 'test.ppm', 'test_corrupted.ppm', 'img_rgba_color.png'):
full_file = test_utils.datafile(filename, __name__)
# load with just image name
i1 = bob.io.image.load(full_file)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment