Allow use of huges values for localtime / ctime / gmtime with MSVC 2008 or later

svn path=/trunk/; revision=46930
This commit is contained in:
Pascal Quantin 2013-01-04 14:56:27 +00:00
parent 38fdbeeb7e
commit deb4f08cb2
6 changed files with 14 additions and 10 deletions

View File

@ -395,7 +395,7 @@ time_string(time_t timer, capture_info *cf_info, gboolean want_lf)
g_snprintf(time_string_buf, 20, "%lu%s", (unsigned long)timer, lf);
return time_string_buf;
} else {
#ifdef _MSC_VER
#if (defined _WIN32) && (_MSC_VER < 1500)
/* calling localtime(), and thus ctime(), on MSVC 2005 with huge values causes it to crash */
/* XXX - find the exact value that still does work */
/* XXX - using _USE_32BIT_TIME_T might be another way to circumvent this problem */

View File

@ -149,7 +149,7 @@ abs_time_to_str_with_sec_resolution(const struct wtap_nstime *abs_time)
struct tm *tmp;
gchar *buf = g_malloc(16);
#ifdef _MSC_VER
#if (defined _WIN32) && (_MSC_VER < 1500)
/* calling localtime() on MSVC 2005 with huge values causes it to crash */
/* XXX - find the exact value that still does work */
/* XXX - using _USE_32BIT_TIME_T might be another way to circumvent this problem */

View File

@ -571,7 +571,7 @@ abs_time_to_str(const nstime_t *abs_time, const absolute_time_display_e fmt,
const char *zonename = "???";
gchar *buf = NULL;
#ifdef _MSC_VER
#if (defined _WIN32) && (_MSC_VER < 1500)
/* calling localtime() on MSVC 2005 with huge values causes it to crash */
/* XXX - find the exact value that still does work */
/* XXX - using _USE_32BIT_TIME_T might be another way to circumvent this problem */
@ -655,7 +655,7 @@ abs_time_secs_to_str(const time_t abs_time, const absolute_time_display_e fmt,
const char *zonename = "???";
gchar *buf = NULL;
#ifdef _MSC_VER
#if (defined _WIN32) && (_MSC_VER < 1500)
/* calling localtime() on MSVC 2005 with huge values causes it to crash */
/* XXX - find the exact value that still does work */
/* XXX - using _USE_32BIT_TIME_T might be another way to circumvent this problem */

View File

@ -116,7 +116,7 @@ time_to_string(char *string_buff, gulong string_buff_size, time_t ti_time)
{
struct tm *ti_tm;
#ifdef _MSC_VER
#if (defined _WIN32) && (_MSC_VER < 1500)
/* calling localtime() on MSVC 2005 with huge values causes it to crash */
/* XXX - find the exact value that still does work */
/* XXX - using _USE_32BIT_TIME_T might be another way to circumvent this problem */

View File

@ -375,6 +375,7 @@ k12text_dump(wtap_dumper *wdh _U_, const struct wtap_pkthdr *phdr,
guint ns;
guint ms;
gboolean ret;
struct tm *tmp;
str_enc = NULL;
for(i=0; encaps[i].s; i++) {
@ -397,16 +398,19 @@ k12text_dump(wtap_dumper *wdh _U_, const struct wtap_pkthdr *phdr,
ms = phdr->ts.nsecs / 1000000;
ns = (phdr->ts.nsecs - (1000000*ms))/1000;
#ifdef _MSC_VER
#if (defined _WIN32) && (_MSC_VER < 1500)
/* calling gmtime() on MSVC 2005 with huge values causes it to crash */
/* XXX - find the exact value that still does work */
/* XXX - using _USE_32BIT_TIME_T might be another way to circumvent this problem */
if (phdr->ts.secs > 2000000000)
g_snprintf(p, 90, "+---------+---------------+----------+\r\nXX:XX:XX,");
tmp = NULL;
else
#endif
strftime(p, 90, "+---------+---------------+----------+\r\n%H:%M:%S,",
gmtime(&phdr->ts.secs));
tmp = gmtime(&phdr->ts.secs);
if (tmp == NULL)
g_snprintf(p, 90, "+---------+---------------+----------+\r\nXX:XX:XX,");
else
strftime(p, 90, "+---------+---------------+----------+\r\n%H:%M:%S,", tmp);
wl = strlen(p);
p += wl;
left -= wl;

View File

@ -2127,7 +2127,7 @@ ngsniffer_dump(wtap_dumper *wdh, const struct wtap_pkthdr *phdr,
date. */
if (ngsniffer->first_frame) {
ngsniffer->first_frame=FALSE;
#ifdef _MSC_VER
#if (defined _WIN32) && (_MSC_VER < 1500)
/* calling localtime() on MSVC 2005 with huge values causes it to crash */
/* XXX - find the exact value that still does work */
/* XXX - using _USE_32BIT_TIME_T might be another way to circumvent this problem */