summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHarald Radi <phanto@php.net>2001-08-20 08:53:18 +0000
committerHarald Radi <phanto@php.net>2001-08-20 08:53:18 +0000
commitacf13f82c1698156b3876a91b83704721a0f5fd2 (patch)
tree8ae48d50d90224725c9fe858c8afd3e013774eb9
parent3d0ab1236f8b288644f4d7cb0013bb49d90f4f2b (diff)
downloadphp-git-acf13f82c1698156b3876a91b83704721a0f5fd2.tar.gz
catch date conversion errors
-rw-r--r--ext/com/conversion.c29
-rw-r--r--ext/rpc/com/conversion.c29
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;