#include #include #include int main() { // ScaleShearCurve uses 9 values per control point. A quadratic span reads // three control points, so this is the regression case for the former 3*4 // stack buffer in Curve::eval(). gr2::Curve curve; curve.degree = 2; curve.dim = 9; curve.knots = {0.0f, 1.0f, 2.0f}; curve.controls.resize(27); for (size_t i = 0; i < curve.controls.size(); ++i) { curve.controls[i] = 1.0f + static_cast(i) * 0.01f; } float out[9] = {}; curve.eval(0.5f, out); for (float value : out) { if (!std::isfinite(value)) { std::fprintf(stderr, "non-finite 9D curve output\n"); return 1; } } return 0; }