pull/974/head
parent
8ba10cf26a
commit
bdcff35d5d
|
@ -55,6 +55,7 @@ DefaultIOStream::~DefaultIOStream()
|
||||||
{
|
{
|
||||||
if (mFile) {
|
if (mFile) {
|
||||||
::fclose(mFile);
|
::fclose(mFile);
|
||||||
|
mFile = nullptr;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -111,7 +112,7 @@ size_t DefaultIOStream::FileSize() const
|
||||||
|
|
||||||
if (SIZE_MAX == cachedSize) {
|
if (SIZE_MAX == cachedSize) {
|
||||||
|
|
||||||
// Although fseek/ftell would allow us to reuse the exising file handle here,
|
// Although fseek/ftell would allow us to reuse the existing file handle here,
|
||||||
// it is generally unsafe because:
|
// it is generally unsafe because:
|
||||||
// - For binary streams, it is not technically well-defined
|
// - For binary streams, it is not technically well-defined
|
||||||
// - For text files the results are meaningless
|
// - For text files the results are meaningless
|
||||||
|
@ -125,12 +126,14 @@ size_t DefaultIOStream::FileSize() const
|
||||||
if (0 != err)
|
if (0 != err)
|
||||||
return 0;
|
return 0;
|
||||||
cachedSize = (size_t) (fileStat.st_size);
|
cachedSize = (size_t) (fileStat.st_size);
|
||||||
#else
|
#elif defined __gnu_linux__
|
||||||
struct stat fileStat;
|
struct stat fileStat;
|
||||||
int err = stat(mFilename.c_str(), &fileStat );
|
int err = stat(mFilename.c_str(), &fileStat );
|
||||||
if (0 != err)
|
if (0 != err)
|
||||||
return 0;
|
return 0;
|
||||||
cachedSize = (size_t) (fileStat.st_size);
|
cachedSize = (size_t) (fileStat.st_size);
|
||||||
|
#else
|
||||||
|
# error "Unknown platform"
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
return cachedSize;
|
return cachedSize;
|
||||||
|
|
|
@ -59,11 +59,11 @@ class ASSIMP_API DefaultIOStream : public IOStream
|
||||||
{
|
{
|
||||||
friend class DefaultIOSystem;
|
friend class DefaultIOSystem;
|
||||||
#if __ANDROID__
|
#if __ANDROID__
|
||||||
#if __ANDROID_API__ > 9
|
# if __ANDROID_API__ > 9
|
||||||
#if defined(AI_CONFIG_ANDROID_JNI_ASSIMP_MANAGER_SUPPORT)
|
# if defined(AI_CONFIG_ANDROID_JNI_ASSIMP_MANAGER_SUPPORT)
|
||||||
friend class AndroidJNIIOSystem;
|
friend class AndroidJNIIOSystem;
|
||||||
#endif // defined(AI_CONFIG_ANDROID_JNI_ASSIMP_MANAGER_SUPPORT)
|
# endif // defined(AI_CONFIG_ANDROID_JNI_ASSIMP_MANAGER_SUPPORT)
|
||||||
#endif // __ANDROID_API__ > 9
|
# endif // __ANDROID_API__ > 9
|
||||||
#endif // __ANDROID__
|
#endif // __ANDROID__
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
|
@ -48,7 +48,12 @@ class utDefaultIOStream : public ::testing::Test {
|
||||||
class TestDefaultIOStream : public DefaultIOStream {
|
class TestDefaultIOStream : public DefaultIOStream {
|
||||||
public:
|
public:
|
||||||
TestDefaultIOStream()
|
TestDefaultIOStream()
|
||||||
: DefaultIOStream() {
|
: DefaultIOStream() {
|
||||||
|
// empty
|
||||||
|
}
|
||||||
|
|
||||||
|
TestDefaultIOStream( FILE* pFile, const std::string &strFilename )
|
||||||
|
: DefaultIOStream( pFile, strFilename ) {
|
||||||
// empty
|
// empty
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -58,7 +63,14 @@ public:
|
||||||
};
|
};
|
||||||
|
|
||||||
TEST_F( utDefaultIOStream, FileSizeTest ) {
|
TEST_F( utDefaultIOStream, FileSizeTest ) {
|
||||||
TestDefaultIOStream myStream;
|
char buffer[ L_tmpnam ];
|
||||||
|
tmpnam( buffer );
|
||||||
|
std::FILE *fs( std::fopen( buffer, "w+" ) );
|
||||||
|
size_t written( std::fwrite( buffer, 1, sizeof( char ) * L_tmpnam, fs ) );
|
||||||
|
std::fflush( fs );
|
||||||
|
|
||||||
|
TestDefaultIOStream myStream( fs, buffer );
|
||||||
size_t size = myStream.FileSize();
|
size_t size = myStream.FileSize();
|
||||||
EXPECT_EQ( size, 0 );
|
EXPECT_EQ( size, sizeof( char ) * L_tmpnam );
|
||||||
|
remove( buffer );
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue