From: Tony Cook Date: Wed, 22 May 2013 14:08:22 +0000 (+1000) Subject: [rt #69243] re-work XS for i_getcolors() X-Git-Tag: v0.96_01~16^2~13 X-Git-Url: http://git.imager.perl.org/imager.git/commitdiff_plain/1592522f80f2b8921de105692df3a84b2cae728f [rt #69243] re-work XS for i_getcolors() - use a default for count instead of doing it manually - properly extend the stack for the returned colour list - use malloc_temp() instead of mymalloc() --- diff --git a/Imager.xs b/Imager.xs index 95043773..758f3a12 100644 --- a/Imager.xs +++ b/Imager.xs @@ -3151,29 +3151,24 @@ i_setcolors(im, index, ...) RETVAL void -i_getcolors(im, index, ...) +i_getcolors(im, index, count=1) Imager::ImgRaw im int index + int count PREINIT: i_color *colors; - int count = 1; int i; PPCODE: - if (items > 3) - croak("i_getcolors: too many arguments"); - if (items == 3) - count = SvIV(ST(2)); if (count < 1) croak("i_getcolors: count must be positive"); - colors = mymalloc(sizeof(i_color) * count); + colors = malloc_temp(aTHX_ sizeof(i_color) * count); if (i_getcolors(im, index, colors, count)) { + EXTEND(SP, count); for (i = 0; i < count; ++i) { SV *sv = make_i_color_sv(aTHX_ colors+i); PUSHs(sv); } } - myfree(colors); - undef_neg_int i_colorcount(im)