diff options
author | Harald Radi <phanto@php.net> | 2001-08-20 08:53:18 +0000 |
---|---|---|
committer | Harald Radi <phanto@php.net> | 2001-08-20 08:53:18 +0000 |
commit | acf13f82c1698156b3876a91b83704721a0f5fd2 (patch) | |
tree | 8ae48d50d90224725c9fe858c8afd3e013774eb9 | |
parent | 3d0ab1236f8b288644f4d7cb0013bb49d90f4f2b (diff) | |
download | php-git-acf13f82c1698156b3876a91b83704721a0f5fd2.tar.gz |
catch date conversion errors
-rw-r--r-- | ext/com/conversion.c | 29 | ||||
-rw-r--r-- | ext/rpc/com/conversion.c | 29 |
2 files changed, 34 insertions, 24 deletions
diff --git a/ext/com/conversion.c b/ext/com/conversion.c index 87250943b5..a6b79f5350 100644 --- a/ext/com/conversion.c +++ b/ext/com/conversion.c @@ -614,27 +614,32 @@ PHPAPI int php_variant_to_pval(VARIANT *var_arg, pval *pval_arg, int codepage TS break; case VT_DATE: { + BOOL success; SYSTEMTIME wintime; struct tm phptime; if (V_ISBYREF(var_arg)) { - VariantTimeToSystemTime(*V_DATEREF(var_arg), &wintime); + success = VariantTimeToSystemTime(*V_DATEREF(var_arg), &wintime); } else { - VariantTimeToSystemTime(V_DATE(var_arg), &wintime); + success = VariantTimeToSystemTime(V_DATE(var_arg), &wintime); } - memset(&phptime, 0, sizeof(phptime)); + if (success) { + memset(&phptime, 0, sizeof(phptime)); - phptime.tm_year = wintime.wYear - 1900; - phptime.tm_mon = wintime.wMonth - 1; - phptime.tm_mday = wintime.wDay; - phptime.tm_hour = wintime.wHour; - phptime.tm_min = wintime.wMinute; - phptime.tm_sec = wintime.wSecond; - phptime.tm_isdst = -1; + phptime.tm_year = wintime.wYear - 1900; + phptime.tm_mon = wintime.wMonth - 1; + phptime.tm_mday = wintime.wDay; + phptime.tm_hour = wintime.wHour; + phptime.tm_min = wintime.wMinute; + phptime.tm_sec = wintime.wSecond; + phptime.tm_isdst = -1; - tzset(); - ZVAL_LONG(pval_arg, mktime(&phptime)); + tzset(); + ZVAL_LONG(pval_arg, mktime(&phptime)); + } else { + ret = FAILURE; + } } break; diff --git a/ext/rpc/com/conversion.c b/ext/rpc/com/conversion.c index 87250943b5..a6b79f5350 100644 --- a/ext/rpc/com/conversion.c +++ b/ext/rpc/com/conversion.c @@ -614,27 +614,32 @@ PHPAPI int php_variant_to_pval(VARIANT *var_arg, pval *pval_arg, int codepage TS break; case VT_DATE: { + BOOL success; SYSTEMTIME wintime; struct tm phptime; if (V_ISBYREF(var_arg)) { - VariantTimeToSystemTime(*V_DATEREF(var_arg), &wintime); + success = VariantTimeToSystemTime(*V_DATEREF(var_arg), &wintime); } else { - VariantTimeToSystemTime(V_DATE(var_arg), &wintime); + success = VariantTimeToSystemTime(V_DATE(var_arg), &wintime); } - memset(&phptime, 0, sizeof(phptime)); + if (success) { + memset(&phptime, 0, sizeof(phptime)); - phptime.tm_year = wintime.wYear - 1900; - phptime.tm_mon = wintime.wMonth - 1; - phptime.tm_mday = wintime.wDay; - phptime.tm_hour = wintime.wHour; - phptime.tm_min = wintime.wMinute; - phptime.tm_sec = wintime.wSecond; - phptime.tm_isdst = -1; + phptime.tm_year = wintime.wYear - 1900; + phptime.tm_mon = wintime.wMonth - 1; + phptime.tm_mday = wintime.wDay; + phptime.tm_hour = wintime.wHour; + phptime.tm_min = wintime.wMinute; + phptime.tm_sec = wintime.wSecond; + phptime.tm_isdst = -1; - tzset(); - ZVAL_LONG(pval_arg, mktime(&phptime)); + tzset(); + ZVAL_LONG(pval_arg, mktime(&phptime)); + } else { + ret = FAILURE; + } } break; |