James Hawkins : crypt32: Simplify CRYPT_AsnDecodeUnicodeNameValueInternal, getting rid of a warning.

Alexandre Julliard julliard at wine.codeweavers.com
Thu Sep 7 09:20:20 CDT 2006


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

Author: James Hawkins <truiken at gmail.com>
Date:   Wed Aug 30 14:08:38 2006 -0700

crypt32: Simplify CRYPT_AsnDecodeUnicodeNameValueInternal, getting rid of a warning.

---

 dlls/crypt32/decode.c |  104 ++++++++++++++++++++++++-------------------------
 1 files changed, 51 insertions(+), 53 deletions(-)

diff --git a/dlls/crypt32/decode.c b/dlls/crypt32/decode.c
index d1e4006..4e20de4 100644
--- a/dlls/crypt32/decode.c
+++ b/dlls/crypt32/decode.c
@@ -1511,67 +1511,65 @@ static BOOL WINAPI CRYPT_AsnDecodeUnicod
             break;
         default:
             SetLastError(CRYPT_E_ASN1_BADTAG);
+            return FALSE;
+        }
+
+        if (!value)
+            *pcbStructInfo = bytesNeeded;
+        else if (*pcbStructInfo < bytesNeeded)
+        {
+            *pcbStructInfo = bytesNeeded;
+            SetLastError(ERROR_MORE_DATA);
             ret = FALSE;
         }
-        if (ret)
+        else
         {
-            if (!value)
-                *pcbStructInfo = bytesNeeded;
-            else if (*pcbStructInfo < bytesNeeded)
-            {
-                *pcbStructInfo = bytesNeeded;
-                SetLastError(ERROR_MORE_DATA);
-                ret = FALSE;
-            }
-            else
+            *pcbStructInfo = bytesNeeded;
+            value->dwValueType = valueType;
+            if (dataLen)
             {
-                *pcbStructInfo = bytesNeeded;
-                value->dwValueType = valueType;
-                if (dataLen)
-                {
-                    DWORD i;
-                    LPWSTR str = (LPWSTR)value->Value.pbData;
+                DWORD i;
+                LPWSTR str = (LPWSTR)value->Value.pbData;
 
-                    assert(value->Value.pbData);
-                    switch (pbEncoded[0])
-                    {
-                    case ASN_NUMERICSTRING:
-                    case ASN_PRINTABLESTRING:
-                    case ASN_IA5STRING:
-                    case ASN_T61STRING:
-                    case ASN_VIDEOTEXSTRING:
-                    case ASN_GRAPHICSTRING:
-                    case ASN_VISIBLESTRING:
-                    case ASN_GENERALSTRING:
-                        value->Value.cbData = dataLen * 2;
-                        for (i = 0; i < dataLen; i++)
-                            str[i] = pbEncoded[1 + lenBytes + i];
-                        break;
-                    case ASN_UNIVERSALSTRING:
-                        value->Value.cbData = dataLen / 2;
-                        for (i = 0; i < dataLen / 4; i++)
-                            str[i] = (pbEncoded[1 + lenBytes + 2 * i + 2] << 8)
-                             | pbEncoded[1 + lenBytes + 2 * i + 3];
-                        break;
-                    case ASN_BMPSTRING:
-                        value->Value.cbData = dataLen;
-                        for (i = 0; i < dataLen / 2; i++)
-                            str[i] = (pbEncoded[1 + lenBytes + 2 * i] << 8) |
-                             pbEncoded[1 + lenBytes + 2 * i + 1];
-                        break;
-                    case ASN_UTF8STRING:
-                        value->Value.cbData = MultiByteToWideChar(CP_UTF8, 0,
-                         (LPSTR)pbEncoded + 1 + lenBytes, dataLen, 
-                         str, bytesNeeded - sizeof(CERT_NAME_VALUE)) * 2;
-                        break;
-                    }
-                }
-                else
+                assert(value->Value.pbData);
+                switch (pbEncoded[0])
                 {
-                    value->Value.cbData = 0;
-                    value->Value.pbData = NULL;
+                case ASN_NUMERICSTRING:
+                case ASN_PRINTABLESTRING:
+                case ASN_IA5STRING:
+                case ASN_T61STRING:
+                case ASN_VIDEOTEXSTRING:
+                case ASN_GRAPHICSTRING:
+                case ASN_VISIBLESTRING:
+                case ASN_GENERALSTRING:
+                    value->Value.cbData = dataLen * 2;
+                    for (i = 0; i < dataLen; i++)
+                        str[i] = pbEncoded[1 + lenBytes + i];
+                    break;
+                case ASN_UNIVERSALSTRING:
+                    value->Value.cbData = dataLen / 2;
+                    for (i = 0; i < dataLen / 4; i++)
+                        str[i] = (pbEncoded[1 + lenBytes + 2 * i + 2] << 8)
+                         | pbEncoded[1 + lenBytes + 2 * i + 3];
+                    break;
+                case ASN_BMPSTRING:
+                    value->Value.cbData = dataLen;
+                    for (i = 0; i < dataLen / 2; i++)
+                        str[i] = (pbEncoded[1 + lenBytes + 2 * i] << 8) |
+                         pbEncoded[1 + lenBytes + 2 * i + 1];
+                    break;
+                case ASN_UTF8STRING:
+                    value->Value.cbData = MultiByteToWideChar(CP_UTF8, 0,
+                     (LPSTR)pbEncoded + 1 + lenBytes, dataLen, 
+                     str, bytesNeeded - sizeof(CERT_NAME_VALUE)) * 2;
+                    break;
                 }
             }
+            else
+            {
+                value->Value.cbData = 0;
+                value->Value.pbData = NULL;
+            }
         }
     }
     return ret;




More information about the wine-cvs mailing list