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)