Juan Lang : crypt32: Don't use exception handler when decoding time zone, caller already does.

Alexandre Julliard julliard at winehq.org
Tue Sep 18 05:31:27 CDT 2007


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

Author: Juan Lang <juan.lang at gmail.com>
Date:   Mon Sep 17 17:08:52 2007 -0700

crypt32: Don't use exception handler when decoding time zone, caller already does.

---

 dlls/crypt32/decode.c |   72 +++++++++++++++++++++----------------------------
 1 files changed, 31 insertions(+), 41 deletions(-)

diff --git a/dlls/crypt32/decode.c b/dlls/crypt32/decode.c
index e96757f..77265c3 100644
--- a/dlls/crypt32/decode.c
+++ b/dlls/crypt32/decode.c
@@ -3443,65 +3443,55 @@ static BOOL WINAPI CRYPT_AsnDecodeEnumerated(DWORD dwCertEncodingType,
 static BOOL CRYPT_AsnDecodeTimeZone(const BYTE *pbEncoded, DWORD len,
  SYSTEMTIME *sysTime)
 {
-    BOOL ret;
+    BOOL ret = TRUE;
 
-    __TRY
+    if (len >= 3 && (*pbEncoded == '+' || *pbEncoded == '-'))
     {
-        ret = TRUE;
-        if (len >= 3 && (*pbEncoded == '+' || *pbEncoded == '-'))
-        {
-            WORD hours, minutes = 0;
-            BYTE sign = *pbEncoded++;
+        WORD hours, minutes = 0;
+        BYTE sign = *pbEncoded++;
 
-            len--;
-            CRYPT_TIME_GET_DIGITS(pbEncoded, len, 2, hours);
-            if (ret && hours >= 24)
+        len--;
+        CRYPT_TIME_GET_DIGITS(pbEncoded, len, 2, hours);
+        if (ret && hours >= 24)
+        {
+            SetLastError(CRYPT_E_ASN1_CORRUPT);
+            ret = FALSE;
+        }
+        else if (len >= 2)
+        {
+            CRYPT_TIME_GET_DIGITS(pbEncoded, len, 2, minutes);
+            if (ret && minutes >= 60)
             {
                 SetLastError(CRYPT_E_ASN1_CORRUPT);
                 ret = FALSE;
             }
-            else if (len >= 2)
+        }
+        if (ret)
+        {
+            if (sign == '+')
             {
-                CRYPT_TIME_GET_DIGITS(pbEncoded, len, 2, minutes);
-                if (ret && minutes >= 60)
-                {
-                    SetLastError(CRYPT_E_ASN1_CORRUPT);
-                    ret = FALSE;
-                }
+                sysTime->wHour += hours;
+                sysTime->wMinute += minutes;
             }
-            if (ret)
+            else
             {
-                if (sign == '+')
+                if (hours > sysTime->wHour)
                 {
-                    sysTime->wHour += hours;
-                    sysTime->wMinute += minutes;
+                    sysTime->wDay--;
+                    sysTime->wHour = 24 - (hours - sysTime->wHour);
                 }
                 else
+                    sysTime->wHour -= hours;
+                if (minutes > sysTime->wMinute)
                 {
-                    if (hours > sysTime->wHour)
-                    {
-                        sysTime->wDay--;
-                        sysTime->wHour = 24 - (hours - sysTime->wHour);
-                    }
-                    else
-                        sysTime->wHour -= hours;
-                    if (minutes > sysTime->wMinute)
-                    {
-                        sysTime->wHour--;
-                        sysTime->wMinute = 60 - (minutes - sysTime->wMinute);
-                    }
-                    else
-                        sysTime->wMinute -= minutes;
+                    sysTime->wHour--;
+                    sysTime->wMinute = 60 - (minutes - sysTime->wMinute);
                 }
+                else
+                    sysTime->wMinute -= minutes;
             }
         }
     }
-    __EXCEPT_PAGE_FAULT
-    {
-        SetLastError(STATUS_ACCESS_VIOLATION);
-        ret = FALSE;
-    }
-    __ENDTRY
     return ret;
 }
 




More information about the wine-cvs mailing list