From f558ddfb18b3b5c189a738f34faa3d60d303a2ac Mon Sep 17 00:00:00 2001 From: Raymond Lu Date: Fri, 10 Dec 2004 17:08:12 -0500 Subject: [svn-r9654] Purpose: Description: In file H5FDsec2.c and H5FDlog.c, there's statements like H5_ASSIGN_OVERFLOW(file->eof,sb.st_size,off_t,haddr_t); It assumes sb.st_size from h5_stat_t is of type off_t. But on Windows, it has type __int64. So the H5_ASSIGN_OVERFLOW statement may cause problem. Instead of trying to do switch between Windows and other systems in H5FDsec2.c and H5FDlog.c, define a substituting type in H5private.h to fix the problem. On Windows, this type is __int64; on other systems, it is off_t. Platforms tested: fuss. Simple fix. Already did h5committest for v1.6. --- src/H5FDlog.c | 2 +- src/H5FDsec2.c | 2 +- src/H5private.h | 5 ++++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/H5FDlog.c b/src/H5FDlog.c index c8cfd14..cd1fbac 100644 --- a/src/H5FDlog.c +++ b/src/H5FDlog.c @@ -544,7 +544,7 @@ H5FD_log_open(const char *name, unsigned flags, hid_t fapl_id, fa = H5P_get_driver_info(plist); file->fd = fd; - H5_ASSIGN_OVERFLOW(file->eof,sb.st_size,off_t,haddr_t); + H5_ASSIGN_OVERFLOW(file->eof,sb.st_size,h5_stat_size_t,haddr_t); file->pos = HADDR_UNDEF; file->op = OP_UNKNOWN; #ifdef WIN32 diff --git a/src/H5FDsec2.c b/src/H5FDsec2.c index 492e024..94babea 100644 --- a/src/H5FDsec2.c +++ b/src/H5FDsec2.c @@ -375,7 +375,7 @@ H5FD_sec2_open(const char *name, unsigned flags, hid_t UNUSED fapl_id, HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "unable to allocate file struct") file->fd = fd; - H5_ASSIGN_OVERFLOW(file->eof,sb.st_size,off_t,haddr_t); + H5_ASSIGN_OVERFLOW(file->eof,sb.st_size,h5_stat_size_t,haddr_t); file->pos = HADDR_UNDEF; file->op = OP_UNKNOWN; #ifdef WIN32 diff --git a/src/H5private.h b/src/H5private.h index 86b975c..5421b6c 100644 --- a/src/H5private.h +++ b/src/H5private.h @@ -618,15 +618,18 @@ H5_DLL int HDfprintf (FILE *stream, const char *fmt, ...); /* definitions related to the file stat utilities */ #ifdef WIN32 #ifdef __MWERKS__ - #define HDfstat(F,B) fstat(F,B) + #define HDfstat(F,B) fstat(F,B) typedef struct stat h5_stat_t; + typedef off_t h5_stat_size_t; #else /*MSVC*/ #define HDfstat(F,B) _fstati64(F,B) typedef struct _stati64 h5_stat_t; + typedef __int64 h5_stat_size_t; #endif #else #define HDfstat(F,B) fstat(F,B) typedef struct stat h5_stat_t; +typedef off_t h5_stat_size_t; #endif #define HDftell(F) ftell(F) -- cgit v0.12