#447 Conky exit with "you don't need that many fonts" message

git
open
nobody
None
5
2014-01-23
2014-01-23
davidcancalon
No

Depending of your configuration, sometimes Conky exit after a random time with the message "you don't need that many fonts, sorry". This occurs when Conky try to use more than 256 fonts (see fonts.c line 73).

Except if you really use more than 256 fonts, this is a bug occurs when you have fonts objects placed after a ${if} block.

Exemple :
${if_match ${upspeedf eth0} > 0}${color2}${endif} ${font PizzaDude Bullets:size=10}O${font}

In this case Conky will allocate too much fonts along the time. Each time the ${if} condition change (true -> false or false -> true) the index of the font object (stored in the "specials" array defined in specials.c) will change and conky will reallocate a new font object (specials.c, function new_font(), line 341). The reason is that s->font_added is set to zero because the font object has been shifted by -1 or +1 in the specials array.

There is a workaround to this issue, but really possible only if you have only a few objects in the ${if} block. The solution consist to add an ${else} block and pad it with dummy objects. Exactly the same number you have in the ${if} block !

${if_match ${upspeedf eth0} > 0}${color2}${else}${color1}${endif} ${font PizzaDude Bullets:size=10}O${font}

In this case Conky will not allocate extra fonts along the time.

I will try to work on a patch for this issue but help will be appreciate :)
And sorry for my English...

Discussion