ASSERT(col->max_depth >= 2, "image too small");
col->nb_list = calloc(col->max_depth, sizeof(struct neighbors *));
- if (!col->nb_list)
+ if (!col->nb_list) {
+ rc = -1;
goto error;
+ }
col->marks = calloc(col->max_depth, sizeof(darray_t *));
- if (!col->marks)
+ if (!col->marks) {
+ rc = -1;
goto error;
+ }
col->values = calloc(col->max_depth, sizeof(darray_t *));
- if (!col->values)
+ if (!col->values) {
+ rc = -1;
goto error;
+ }
col->flows = calloc(col->max_depth, sizeof(darray_t *));
- if (!col->flows)
+ if (!col->flows) {
+ rc = -1;
goto error;
+ }
col->flows_i = calloc(col->max_depth, sizeof(darray_t *));
- if (!col->flows_i)
+ if (!col->flows_i) {
+ rc = -1;
goto error;
+ }
if (col->scalexyz) {
/* the flows_xy are scaled in xy in the current level */
col->flows_xy = calloc(col->max_depth, sizeof(darray_t *));
- if (!col->flows_xy)
+ if (!col->flows_xy) {
+ rc = -1;
goto error;
+ }
}
dimensions[0] = col->w;
dimensions[1] = col->h;
dimensions[2] = col->k;
luminance = darrayCreate(3, dimensions);
- if (!luminance)
+ if (!luminance) {
+ rc = -1;
goto error;
+ }
/* generate sparse multigrid */
last_kk = kk = col->k;
printf("-> prepare sparse grid");
dimensions[1] = hh;
dimensions[2] = last_kk;
col->marks[d] = darrayCreate(3, dimensions);
- if (!col->marks[d])
+ if (!col->marks[d]) {
+ rc = -1;
goto error;
+ }
dimensions[0] = ww;
dimensions[1] = hh;
dimensions[2] = last_kk-1;
dimensions[3] = 2;
col->flows[d] = darrayCreate(4, dimensions);
- if (!col->flows[d])
+ if (!col->flows[d]) {
+ rc = -1;
goto error;
+ }
col->flows_i[d] = darrayCreate(4, dimensions);
- if (!col->flows_i[d])
+ if (!col->flows_i[d]) {
+ rc = -1;
goto error;
+ }
if (d < col->scalexyz) {
dimensions[0] = (ww+1)>>1;
dimensions[1] = (hh+1)>>1;
dimensions[2] = kk-1;
dimensions[3] = 2;
col->flows_xy[d] = darrayCreate(4, dimensions);
- if (!col->flows_xy[d])
+ if (!col->flows_xy[d]) {
+ rc = -1;
goto error;
+ }
}
if (d == 0) {
for (z = 0; z < kk; z++) {
dimensions[1] = hh;
dimensions[2] = kk;
col->values[d] = darrayCreate(3, dimensions);
- if (!col->values[d])
+ if (!col->values[d]) {
+ rc = -1;
goto error;
+ }
/* generate array of neighbors */
#ifndef TEST_NO_RENDER
col->nb_list[d] = gen_neighbor(ww, hh, kk, col->flows[d], col->flows_i[d]);
- if (!col->nb_list[d])
+ if (!col->nb_list[d]) {
+ rc = -1;
goto error;
+ }
/* weighten */
weighten(luminance, col->nb_list[d]);
#endif
dimensions[1] = col->h;
dimensions[2] = col->k;
col->init = darrayCreate(3, dimensions);
- if (!col->init)
+ if (!col->init) {
+ rc = -1;
goto error;
+ }
#ifdef TEST_PYRAMID
dimensions[0] = col->w;
// load original image and convert their RGB components to double RGB array
rc = load_img(-1, &img_buffer, &load_w, &load_h, filename, index + z);
if (rc) {
- fprintf(stderr, "Failed to load grey image\n");
+ fprintf(stderr, "Failed to load grey image '%s'\n", filename);
return 0;
}
scale_img(img_buffer, load_w, load_h, scale);