diff options
| -rw-r--r-- | x.c | 15 |
1 files changed, 9 insertions, 6 deletions
| @@ -226,8 +226,9 @@ typedef struct { | |||
| 226 | } Fontcache; | 226 | } Fontcache; |
| 227 | 227 | ||
| 228 | /* Fontcache is an array now. A new font will be appended to the array. */ | 228 | /* Fontcache is an array now. A new font will be appended to the array. */ |
| 229 | static Fontcache frc[16]; | 229 | static Fontcache *frc = NULL; |
| 230 | static int frclen = 0; | 230 | static int frclen = 0; |
| 231 | static int frccap = 0; | ||
| 231 | static char *usedfont = NULL; | 232 | static char *usedfont = NULL; |
| 232 | static double usedfontsize = 0; | 233 | static double usedfontsize = 0; |
| 233 | static double defaultfontsize = 0; | 234 | static double defaultfontsize = 0; |
| @@ -1244,12 +1245,14 @@ xmakeglyphfontspecs(XftGlyphFontSpec *specs, const Glyph *glyphs, int len, int x | |||
| 1244 | fcpattern, &fcres); | 1245 | fcpattern, &fcres); |
| 1245 | 1246 | ||
| 1246 | /* | 1247 | /* |
| 1247 | * Overwrite or create the new cache entry. | 1248 | * Allocate memory for the new cache entry. |
| 1248 | */ | 1249 | */ |
| 1249 | if (frclen >= LEN(frc)) { | 1250 | if (frclen >= frccap) { |
| 1250 | frclen = LEN(frc) - 1; | 1251 | frccap += 16; |
| 1251 | XftFontClose(xw.dpy, frc[frclen].font); | 1252 | if (!frc) |
| 1252 | frc[frclen].unicodep = 0; | 1253 | frc = xmalloc(frccap * sizeof(Fontcache)); |
| 1254 | else | ||
| 1255 | frc = xrealloc(frc, frccap * sizeof(Fontcache)); | ||
| 1253 | } | 1256 | } |
| 1254 | 1257 | ||
| 1255 | frc[frclen].font = XftFontOpenPattern(xw.dpy, | 1258 | frc[frclen].font = XftFontOpenPattern(xw.dpy, |
