summaryrefslogtreecommitdiffstats
path: root/libass/ass_outline.c
diff options
context:
space:
mode:
Diffstat (limited to 'libass/ass_outline.c')
-rw-r--r--libass/ass_outline.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/libass/ass_outline.c b/libass/ass_outline.c
index fd7e4ed..26bd424 100644
--- a/libass/ass_outline.c
+++ b/libass/ass_outline.c
@@ -35,6 +35,7 @@ bool outline_alloc(ASS_Outline *outline, size_t n_points, size_t n_segments)
outline->max_points = n_points;
outline->max_segments = n_segments;
+ outline->n_points = outline->n_segments = 0;
return true;
}
@@ -61,7 +62,6 @@ bool outline_convert(ASS_Outline *outline, const FT_Outline *source)
S_ON, S_Q, S_C1, S_C2
};
- outline->n_points = outline->n_segments = 0;
for (size_t i = 0, j = 0; i < source->n_contours; i++) {
ASS_Vector pt;
bool skip_last = false;
@@ -1344,13 +1344,15 @@ static bool close_contour(StrokerState *str, int dir)
bool outline_stroke(ASS_Outline *result, ASS_Outline *result1,
const ASS_Outline *path, int xbord, int ybord, int eps)
{
+ outline_alloc(result, 2 * path->n_points, 2 * path->n_segments);
+ outline_alloc(result1, 2 * path->n_points, 2 * path->n_segments);
+ if (!result->max_points || !result1->max_points)
+ return false;
+
const int dir = 3;
int rad = FFMAX(xbord, ybord);
assert(rad >= eps);
- result->n_points = result->n_segments = 0;
- result1->n_points = result1->n_segments = 0;
-
StrokerState str;
str.result[0] = result;
str.result[1] = result1;