diff --git a/dlls/dwrite/font.c b/dlls/dwrite/font.c
index 3da6b555c02f71689562f97798d70dbdbfa94ea0..8e173263ad504cd11f82957d021c5d4b5320933e 100644
--- a/dlls/dwrite/font.c
+++ b/dlls/dwrite/font.c
@@ -496,9 +496,10 @@ static const struct dwrite_fonttable *get_fontface_cpal(struct dwrite_fontface *
     return &fontface->cpal;
 }
 
-static void addref_font_data(struct dwrite_font_data *data)
+static struct dwrite_font_data * addref_font_data(struct dwrite_font_data *data)
 {
     InterlockedIncrement(&data->ref);
+    return data;
 }
 
 static void release_font_data(struct dwrite_font_data *data)
@@ -2645,9 +2646,7 @@ static HRESULT WINAPI dwritefontfamily_GetMatchingFonts(IDWriteFontFamily2 *ifac
     {
         if (!func || func(family->data->fonts[i]))
         {
-            fonts->fonts[fonts->font_count] = family->data->fonts[i];
-            addref_font_data(family->data->fonts[i]);
-            fonts->font_count++;
+            fonts->fonts[fonts->font_count++] = addref_font_data(family->data->fonts[i]);
         }
     }
 
@@ -5006,8 +5005,7 @@ HRESULT create_fontface(const struct fontface_desc *desc, struct list *cached_li
     */
     if (desc->font_data)
     {
-        font_data = desc->font_data;
-        addref_font_data(font_data);
+        font_data = addref_font_data(desc->font_data);
     }
     else
     {