Nikolay Sivov : riched20: Improve error handling in SetFont (Coverity).

Alexandre Julliard julliard at wine.codeweavers.com
Mon Jun 8 07:49:56 CDT 2015


Module: wine
Branch: master
Commit: 3681a59c298fdedfe0cfc13d1fbd42fb1d9d3b51
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=3681a59c298fdedfe0cfc13d1fbd42fb1d9d3b51

Author: Nikolay Sivov <nsivov at codeweavers.com>
Date:   Sun Jun  7 23:47:37 2015 +0300

riched20: Improve error handling in SetFont (Coverity).

---

 dlls/riched20/richole.c | 67 +++++++++++++++++++++++++------------------------
 1 file changed, 34 insertions(+), 33 deletions(-)

diff --git a/dlls/riched20/richole.c b/dlls/riched20/richole.c
index 1cb6589..d39bce7 100644
--- a/dlls/riched20/richole.c
+++ b/dlls/riched20/richole.c
@@ -523,12 +523,13 @@ static inline const IRichEditOleImpl *get_range_reole(ITextRange *range)
 static void textrange_set_font(ITextRange *range, ITextFont *font)
 {
     CHARFORMAT2W fmt;
+    HRESULT hr;
     LONG value;
     BSTR str;
     FLOAT f;
 
 #define CHARFORMAT_SET_B_FIELD(mask, value) \
-    if (value != tomUndefined) { \
+    if (hr == S_OK && value != tomUndefined) { \
         fmt.dwMask |= CFM_##mask; \
         if (value == tomTrue) fmt.dwEffects |= CFE_##mask; \
     } \
@@ -538,73 +539,73 @@ static void textrange_set_font(ITextRange *range, ITextFont *font)
     fmt.cbSize = sizeof(fmt);
 
     value = tomUndefined;
-    ITextFont_GetAllCaps(font, &value);
+    hr = ITextFont_GetAllCaps(font, &value);
     CHARFORMAT_SET_B_FIELD(ALLCAPS, value);
 
     value = tomUndefined;
-    ITextFont_GetBold(font, &value);
+    hr = ITextFont_GetBold(font, &value);
     CHARFORMAT_SET_B_FIELD(BOLD, value);
 
     value = tomUndefined;
-    ITextFont_GetEmboss(font, &value);
+    hr = ITextFont_GetEmboss(font, &value);
     CHARFORMAT_SET_B_FIELD(EMBOSS, value);
 
     value = tomUndefined;
-    ITextFont_GetHidden(font, &value);
+    hr = ITextFont_GetHidden(font, &value);
     CHARFORMAT_SET_B_FIELD(HIDDEN, value);
 
     value = tomUndefined;
-    ITextFont_GetEngrave(font, &value);
+    hr = ITextFont_GetEngrave(font, &value);
     CHARFORMAT_SET_B_FIELD(IMPRINT, value);
 
     value = tomUndefined;
-    ITextFont_GetItalic(font, &value);
+    hr = ITextFont_GetItalic(font, &value);
     CHARFORMAT_SET_B_FIELD(ITALIC, value);
 
     value = tomUndefined;
-    ITextFont_GetOutline(font, &value);
+    hr = ITextFont_GetOutline(font, &value);
     CHARFORMAT_SET_B_FIELD(OUTLINE, value);
 
     value = tomUndefined;
-    ITextFont_GetProtected(font, &value);
+    hr = ITextFont_GetProtected(font, &value);
     CHARFORMAT_SET_B_FIELD(PROTECTED, value);
 
     value = tomUndefined;
-    ITextFont_GetShadow(font, &value);
+    hr = ITextFont_GetShadow(font, &value);
     CHARFORMAT_SET_B_FIELD(SHADOW, value);
 
     value = tomUndefined;
-    ITextFont_GetSmallCaps(font, &value);
+    hr = ITextFont_GetSmallCaps(font, &value);
     CHARFORMAT_SET_B_FIELD(SMALLCAPS, value);
 
     value = tomUndefined;
-    ITextFont_GetStrikeThrough(font, &value);
+    hr = ITextFont_GetStrikeThrough(font, &value);
     CHARFORMAT_SET_B_FIELD(STRIKEOUT, value);
 
     value = tomUndefined;
-    ITextFont_GetSubscript(font, &value);
+    hr = ITextFont_GetSubscript(font, &value);
     CHARFORMAT_SET_B_FIELD(SUBSCRIPT, value);
 
     value = tomUndefined;
-    ITextFont_GetSuperscript(font, &value);
+    hr = ITextFont_GetSuperscript(font, &value);
     CHARFORMAT_SET_B_FIELD(SUPERSCRIPT, value);
 
     value = tomUndefined;
-    ITextFont_GetUnderline(font, &value);
+    hr = ITextFont_GetUnderline(font, &value);
     CHARFORMAT_SET_B_FIELD(UNDERLINE, value);
 
 #undef CHARFORMAT_SET_B_FIELD
 
     value = tomUndefined;
-    ITextFont_GetAnimation(font, &value);
-    if (value != tomUndefined) {
+    hr = ITextFont_GetAnimation(font, &value);
+    if (hr == S_OK && value != tomUndefined) {
         fmt.dwMask |= CFM_ANIMATION;
         fmt.bAnimation = value;
     }
 
     value = tomUndefined;
-    ITextFont_GetBackColor(font, &value);
-    if (value != tomUndefined) {
+    hr = ITextFont_GetBackColor(font, &value);
+    if (hr == S_OK && value != tomUndefined) {
         fmt.dwMask |= CFM_BACKCOLOR;
         if (value == tomAutoColor)
             fmt.dwEffects |= CFE_AUTOBACKCOLOR;
@@ -613,8 +614,8 @@ static void textrange_set_font(ITextRange *range, ITextFont *font)
     }
 
     value = tomUndefined;
-    ITextFont_GetForeColor(font, &value);
-    if (value != tomUndefined) {
+    hr = ITextFont_GetForeColor(font, &value);
+    if (hr == S_OK && value != tomUndefined) {
         fmt.dwMask |= CFM_COLOR;
         if (value == tomAutoColor)
             fmt.dwEffects |= CFE_AUTOCOLOR;
@@ -623,15 +624,15 @@ static void textrange_set_font(ITextRange *range, ITextFont *font)
     }
 
     value = tomUndefined;
-    ITextFont_GetKerning(font, &f);
-    if (f != tomUndefined) {
+    hr = ITextFont_GetKerning(font, &f);
+    if (hr == S_OK && f != tomUndefined) {
         fmt.dwMask |= CFM_KERNING;
         fmt.wKerning = points_to_twips(f);
     }
 
     value = tomUndefined;
-    ITextFont_GetLanguageID(font, &value);
-    if (value != tomUndefined) {
+    hr = ITextFont_GetLanguageID(font, &value);
+    if (hr == S_OK && value != tomUndefined) {
         fmt.dwMask |= CFM_LCID;
         fmt.lcid = value;
     }
@@ -642,26 +643,26 @@ static void textrange_set_font(ITextRange *range, ITextFont *font)
         SysFreeString(str);
     }
 
-    ITextFont_GetPosition(font, &f);
-    if (f != tomUndefined) {
+    hr = ITextFont_GetPosition(font, &f);
+    if (hr == S_OK && f != tomUndefined) {
         fmt.dwMask |= CFM_OFFSET;
         fmt.yOffset = points_to_twips(f);
     }
 
-    ITextFont_GetSize(font, &f);
-    if (f != tomUndefined) {
+    hr = ITextFont_GetSize(font, &f);
+    if (hr == S_OK && f != tomUndefined) {
         fmt.dwMask |= CFM_SIZE;
         fmt.yHeight = points_to_twips(f);
     }
 
-    ITextFont_GetSpacing(font, &f);
-    if (f != tomUndefined) {
+    hr = ITextFont_GetSpacing(font, &f);
+    if (hr == S_OK && f != tomUndefined) {
         fmt.dwMask |= CFM_SPACING;
         fmt.sSpacing = f;
     }
 
-    ITextFont_GetWeight(font, &value);
-    if (value != tomUndefined) {
+    hr = ITextFont_GetWeight(font, &value);
+    if (hr == S_OK && value != tomUndefined) {
         fmt.dwMask |= CFM_WEIGHT;
         fmt.wWeight = value;
     }




More information about the wine-cvs mailing list