Yalantis/uCrop · error · CImgArgumentException
"[" cimg_appname "_math_parser] CImg<%s>: Function 'ellipse(
Error message
"[" cimg_appname "_math_parser] CImg<%s>: Function 'ellipse()': Invalid arguments '%s'. "
What it means
The math parser's ellipse() function expects either a fixed set of scalar arguments or a valid image index selector. This variant is thrown when no image selector (#ind) was given (ind==~0U) but the argument list does not match any supported ellipse() overload, so the collected extra arguments cannot be dispatched.
Source
Thrown at ucrop/src/main/jni/CImg.h:26709
if (i<i_end) {
cimg_forX(color,k) if (i<i_end) color[k] = (T)_mp_arg(i++);
else { color.resize(k,1,1,1,-1); break; }
color.resize(img._spectrum,1,1,1,0,2);
}
}
}
}
}
}
}
if (!is_invalid_arguments) {
if (is_outlined) img.draw_ellipse(x0,y0,r1,r2,angle,color._data,opacity,pattern);
else img.draw_ellipse(x0,y0,r1,r2,angle,color._data,opacity);
} else {
CImg<doubleT> args(i_end - 4);
cimg_forX(args,k) args[k] = _mp_arg(4 + k);
if (ind==~0U)
throw CImgArgumentException("[" cimg_appname "_math_parser] CImg<%s>: Function 'ellipse()': "
"Invalid arguments '%s'. ",
mp.imgin.pixel_type(),args.value_string()._data);
else
throw CImgArgumentException("[" cimg_appname "_math_parser] CImg<%s>: Function 'ellipse()': "
"Invalid arguments '#%u%s%s'. ",
mp.imgin.pixel_type(),ind,args._width?",":"",args.value_string()._data);
}
return cimg::type<double>::nan();
}
static double mp_epoch(_cimg_math_parser& mp) {
unsigned int
year = (unsigned int)mp.opcode[2]==~0U?~0U:(unsigned int)std::max(_mp_arg(2),1900.),
month = (unsigned int)mp.opcode[3]==~0U?~0U:(unsigned int)cimg::cut(_mp_arg(3),1.,12.),
day = (unsigned int)mp.opcode[4]==~0U?~0U:(unsigned int)cimg::cut(_mp_arg(4),1.,31.),
hour = (unsigned int)mp.opcode[5]==~0U?~0U:(unsigned int)cimg::cut(_mp_arg(5),0.,23.),
minute = (unsigned int)mp.opcode[6]==~0U?~0U:(unsigned int)cimg::cut(_mp_arg(6),0.,59.),
second = (unsigned int)mp.opcode[7]==~0U?~0U:(unsigned int)cimg::cut(_mp_arg(7),0.,60.);View on GitHub (pinned to f788b534b4)
Solutions
- Check the ellipse() signature in your CImg version and supply the exact expected arguments (x,y,radius1,radius2,angle,color,...).
- Add the #image_index selector if you meant to draw on a specific image.
- Count the provided arguments — the message echoes them via value_string to spot extras/missing ones.
- Update the expression if it was written for a different CImg version with different arity.
Example fix
// before: missing second radius ellipse(x,y,r,angle) // after ellipse(x,y,r1,r2,angle)
Defensive patterns
Strategy: validation
Validate before calling
// Validate ellipse() argument count against the expected signature before evaluation
const ELLIPSE_MIN_ARGS = 5; // x,y,r1,r2,angle
function checkEllipseArgs(args) { if (args.length < ELLIPSE_MIN_ARGS) throw new Error('ellipse() needs at least ' + ELLIPSE_MIN_ARGS + ' args, got ' + args.length); } Type guard
function hasValidEllipseArity(args) { return [5,6,7,8].includes(args.length); } Try / catch
try { evalMath(expr); } catch (e) { if (String(e).includes("Function 'ellipse()'") && String(e).includes('Invalid arguments')) { console.error('bad ellipse args:', e.message); fixExpr(); } else throw e; } Prevention
- Count ellipse() arguments against the CImg version's documented overloads
- Echo arguments in scripts before eval during development
- Add a #index selector when drawing to a specific image
- Re-verify math expressions after CImg/G'MIC upgrades
When it happens
Trigger: Calling ellipse() in a math expression with an argument count or types that match no supported signature (e.g. wrong number of radii/angle/color arguments) without a #index prefix.
Common situations: Typos in argument count (missing radius or angle); passing color as multiple scalars beyond the supported arity; porting scripts between CImg versions where ellipse() gained/lost overloads.
Understand the failure class
Background: "missing required argument" and "the following required arguments were not provided": what required-argument errors mean and how to fix them — this error's family across 20 libraries.
Related errors
- "[" cimg_appname "_math_parser] CImg<%s>: Function 'ellipse(
- [cimg_appname_math_parser] CImg<%s>::%s: %s: Too %s argument
- [cimg_appname_math_parser] CImg<%s>::%s: %s: %s arguments pr
- [" cimg_appname "_math_parser] CImg<%s>::%s: Function '%s()'
- [" cimg_appname "_math_parser] CImg<%s>::%s: Function '%s()'
AI-assisted analysis of Yalantis/uCrop@f788b534b4 (2026-09-08).
Data as JSON: /api/errors/a8429ec2bbdec4fe.
Report an issue: GitHub.