summaryrefslogtreecommitdiffstats
path: root/libass/ass_fontselect.c
diff options
context:
space:
mode:
authorGrigori Goronzy <greg@chown.ath.cx>2017-06-01 14:01:15 +0200
committerGrigori Goronzy <greg@chown.ath.cx>2017-06-01 14:01:15 +0200
commitc44807e74e3a26aa3fb2a18b23a612a8d06071fa (patch)
treec5bc8cfaa518ceef6446a4910ec13245e5063cb9 /libass/ass_fontselect.c
parentac052de8f7b6b6976ab89601388a1bd4d421e58b (diff)
downloadlibass-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.c14
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;