]> granicus.if.org Git - libass/commitdiff
fontselect: cleanup lazy font index evaluation
authorGrigori Goronzy <greg@chown.ath.cx>
Thu, 1 Jun 2017 12:01:15 +0000 (14:01 +0200)
committerGrigori Goronzy <greg@chown.ath.cx>
Thu, 1 Jun 2017 12:01:15 +0000 (14:01 +0200)
Fixes a possible NULL pointer dereference, reported by Coverity.

libass/ass_fontselect.c

index 8c8882c30dfc2d970e16bca60a453e1d86599ea4..87815b3e6f9844e65a85de3076cb134c0464133e 100644 (file)
@@ -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;