diff options
author | Grigori Goronzy <greg@chown.ath.cx> | 2017-06-01 14:01:15 +0200 |
---|---|---|
committer | Grigori Goronzy <greg@chown.ath.cx> | 2017-06-01 14:01:15 +0200 |
commit | c44807e74e3a26aa3fb2a18b23a612a8d06071fa (patch) | |
tree | c5bc8cfaa518ceef6446a4910ec13245e5063cb9 /libass/ass_fontselect.c | |
parent | ac052de8f7b6b6976ab89601388a1bd4d421e58b (diff) | |
download | libass-c44807e74e3a26aa3fb2a18b23a612a8d06071fa.tar.bz2 libass-c44807e74e3a26aa3fb2a18b23a612a8d06071fa.tar.xz |
fontselect: cleanup lazy font index evaluation
Fixes a possible NULL pointer dereference, reported by Coverity.
Diffstat (limited to 'libass/ass_fontselect.c')
-rw-r--r-- | libass/ass_fontselect.c | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/libass/ass_fontselect.c b/libass/ass_fontselect.c index 8c8882c..87815b3 100644 --- a/libass/ass_fontselect.c +++ b/libass/ass_fontselect.c @@ -588,14 +588,20 @@ find_font(ASS_FontSelector *priv, ASS_Library *library, // found anything? char *result = NULL; if (selected) { + ASS_FontProvider *provider = selected->provider; + // successfully matched, set up return values *postscript_name = selected->postscript_name; - *index = selected->index; *uid = selected->uid; + // use lazy evaluation for index if applicable + if (provider->funcs.get_font_index) { + *index = provider->funcs.get_font_index(selected->priv); + } else + *index = selected->index; + // set up memory stream if there is no path if (selected->path == NULL) { - ASS_FontProvider *provider = selected->provider; stream->func = provider->funcs.get_data; stream->priv = selected->priv; // Prefer PostScript name because it is unique. This is only @@ -607,11 +613,7 @@ find_font(ASS_FontSelector *priv, ASS_Library *library, result = selected->families[0]; } else result = selected->path; - } - // set up index, if lazy evaluation function exists - if (selected->provider->funcs.get_font_index) { - *index = selected->provider->funcs.get_font_index(selected->priv); } return result; |