i_nearest_color_foo(im, num, xo, yo, ival, dmeasure);
+ myfree(cmatch);
+ myfree(ival);
+ myfree(tval);
+
return 1;
}
line = mymalloc(line_bytes); /* checked 17feb2005 tonyc */
i_get_combine(combine, &combine_func, &combinef_func);
- if (combinef_func)
+ if (combinef_func) {
work = mymalloc(line_bytes); /* checked 17feb2005 tonyc */
+ }
fount_init_state(&state, xa, ya, xb, yb, type, repeat, combine,
super_sample, ssample_param, count, segs);
else
got_one = state.ssfunc(&c, x, y, &state);
if (got_one) {
- if (combine)
+ if (combinef_func)
work[x] = c;
else
line[x] = c;
}
}
- if (combine)
+ if (combinef_func)
combinef_func(line, work, im->channels, im->xsize);
i_plinf(im, 0, im->xsize, y, line);
}
fount_finish_state(&state);
- if (work) myfree(work);
+ myfree(work);
myfree(line);
return 1;
case i_fts_random:
case i_fts_circle:
ssample_param = floor(0.5+ssample_param);
- bytes = sizeof(i_fcolor) * ssample_param;
- if (bytes / sizeof(i_fcolor) == ssample_param) {
- state->ssample_data = mymalloc(sizeof(i_fcolor) * ssample_param);
+ if (im_size_t_max / sizeof(i_fcolor) > ssample_param) {
+ bytes = sizeof(i_fcolor) * ssample_param;
+ state->ssample_data = mymalloc(bytes);
}
else {
+ dIMCTX;
+ im_log((aIMCTX, 1,"size_t overflow calculating super-sample array size for random or circl"));
super_sample = i_fts_none;
}
break;