From: Harald Radi Date: Mon, 20 Aug 2001 08:53:18 +0000 (+0000) Subject: catch date conversion errors X-Git-Tag: PRE_SUBST_Z_MACROS~425 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=acf13f82c1698156b3876a91b83704721a0f5fd2;p=php catch date conversion errors --- 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;