mirror of
https://github.com/HDFGroup/hdf5.git
synced 2025-02-17 16:10:24 +08:00
[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.
This commit is contained in:
parent
b1df0a57aa
commit
f558ddfb18
@ -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
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user