fix reported segfault during configfile processing
This commit is contained in:
26
src/glyphs.c
26
src/glyphs.c
@@ -66,13 +66,35 @@ to_custom_symset_entry_callback(int glyph, struct find_struct *findwhat)
|
|||||||
if (findwhat->unicode_val)
|
if (findwhat->unicode_val)
|
||||||
uval = unicode_val(findwhat->unicode_val);
|
uval = unicode_val(findwhat->unicode_val);
|
||||||
if (uval && unicodeval_to_utf8str(uval, utf8str, sizeof utf8str)) {
|
if (uval && unicodeval_to_utf8str(uval, utf8str, sizeof utf8str)) {
|
||||||
add_custom_urep_entry(gs.symset[idx].name, glyph, uval,
|
/* presently the customizations are affiliated with a particular
|
||||||
|
* symset but we don't have any symset context, so ignore it for now
|
||||||
|
* in order to avoid a segfault. FIXME:
|
||||||
|
* One future idea might be to store the U+ entries under "UTF8"
|
||||||
|
* and apply those customizations to any current symset if it has
|
||||||
|
* a UTF8 handler. Similar approach for unaffiliated glyph/symbols
|
||||||
|
* non-UTF color customizations
|
||||||
|
*/
|
||||||
|
if (gs.symset[idx].name) {
|
||||||
|
add_custom_urep_entry(gs.symset[idx].name, glyph, uval,
|
||||||
utf8str, gs.symset_which_set);
|
utf8str, gs.symset_which_set);
|
||||||
|
} else {
|
||||||
|
static int glyphnag = 0;
|
||||||
|
|
||||||
|
if (!glyphnag++)
|
||||||
|
config_error_add("Unimplemented customization feature, ignoring for now");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
if (findwhat->color) {
|
if (findwhat->color) {
|
||||||
add_custom_nhcolor_entry(gs.symset[idx].name, glyph,
|
if (gs.symset[idx].name) {
|
||||||
|
add_custom_nhcolor_entry(gs.symset[idx].name, glyph,
|
||||||
findwhat->color, gs.symset_which_set);
|
findwhat->color, gs.symset_which_set);
|
||||||
|
} else {
|
||||||
|
static int colornag = 0;
|
||||||
|
|
||||||
|
if (!colornag++)
|
||||||
|
config_error_add("Unimplemented customization feature, ignoring for now");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user