Здравствуйте.
В моей программе есть следующий фрагмент
gf_context_set_antialias(context, GF_CONTEXT_ANTIALIAS_POLYFILL |
GF_CONTEXT_ANTIALIAS_LINES |
GF_CONTEXT_ANTIALIAS_SOFT);
float a = beginAngle;
for(int c = 0; c < count; ++c) {
gf_fixed_t m1 = FloatToFixed(cosf(-a));
gf_fixed_t m2 = FloatToFixed(sinf(-a));
gf_fixed_t matrix[] = { m1, -m2, m2, m1 };
gf_context_set_transform(context, matrix);
gf_draw_poly_fill(context, &points[0], points.size());
gf_context_disable_transform(context);
a += segmentLength;
if(a < 0) a += M_PI;
}
Вызов gf_draw_poly_fill на 3 или 4 итерации приводит к SIGSEGV.
1 Если в исходном фрагменте убрать установку сглаживания gf_context_set_antialias - SIGSEGV не происходит.
2 Если в исходном фрагменте убрать поворот системы координат gf_context_set_transform - SIGSEGV не происходит.
Таким образом совместно эти функции не работают. Как это можно объяснить?