commit 246fde6
uint
·
2026-05-07 14:59:37 +0000 UTC
parent af0e51e
(fix mem-leak) add fail path for font_load
1 files changed,
+10,
-8
+10,
-8
1@@ -68,11 +68,9 @@ int font_load(Font* f, const char* path, double size)
2 f->sft.flags = SFT_DOWNWARD_Y;
3
4 /* get font line metrics */
5- if (sft_lmetrics(&f->sft, &lm) < 0) {
6- sft_freefont(f->font);
7- memset(f, 0, sizeof(*f));
8- return -1;
9- }
10+ if (sft_lmetrics(&f->sft, &lm) < 0)
11+ goto fail;
12+
13 f->asc = lm.ascender;
14 f->dsc = lm.descender;
15
16@@ -80,15 +78,19 @@ int font_load(Font* f, const char* path, double size)
17 f->cellh = (int)(lm.ascender - lm.descender + lm.lineGap + 0.5);
18
19 if (sft_lookup(&f->sft, 'A', &glyph) < 0)
20- return -1;
21+ goto fail;
22 if (sft_gmetrics(&f->sft, glyph, &gm) < 0)
23- return -1;
24+ goto fail;
25
26 f->cellw = (int)(gm.advanceWidth + 0.5);
27 if (f->cellw <= 0 || f->cellh <= 0)
28- return -1;
29+ goto fail;
30
31 return 0;
32+
33+fail:
34+ font_free(f);
35+ return -1;
36 }
37
38 void font_free(Font* f)