{
if (mFile) {
::fclose(mFile);
+ mFile = nullptr;
}
}
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:
// - For binary streams, it is not technically well-defined
// - For text files the results are meaningless
if (0 != err)
return 0;
cachedSize = (size_t) (fileStat.st_size);
-#else
+#elif defined __gnu_linux__
struct stat fileStat;
int err = stat(mFilename.c_str(), &fileStat );
if (0 != err)
return 0;
cachedSize = (size_t) (fileStat.st_size);
+#else
+# error "Unknown platform"
#endif
}
return cachedSize;
{
friend class DefaultIOSystem;
#if __ANDROID__
-#if __ANDROID_API__ > 9
-#if defined(AI_CONFIG_ANDROID_JNI_ASSIMP_MANAGER_SUPPORT)
+# if __ANDROID_API__ > 9
+# if defined(AI_CONFIG_ANDROID_JNI_ASSIMP_MANAGER_SUPPORT)
friend class AndroidJNIIOSystem;
-#endif // defined(AI_CONFIG_ANDROID_JNI_ASSIMP_MANAGER_SUPPORT)
-#endif // __ANDROID_API__ > 9
+# endif // defined(AI_CONFIG_ANDROID_JNI_ASSIMP_MANAGER_SUPPORT)
+# endif // __ANDROID_API__ > 9
#endif // __ANDROID__
protected:
class TestDefaultIOStream : public DefaultIOStream {
public:
TestDefaultIOStream()
- : DefaultIOStream() {
+ : DefaultIOStream() {
+ // empty
+ }
+
+ TestDefaultIOStream( FILE* pFile, const std::string &strFilename )
+ : DefaultIOStream( pFile, strFilename ) {
// empty
}
};
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();
- EXPECT_EQ( size, 0 );
+ EXPECT_EQ( size, sizeof( char ) * L_tmpnam );
+ remove( buffer );
}