mmlibs/mmfw/src/Plugin/StdSourceAndSink/fileaccess.cpp
changeset 41 f7bf1ed8db72
parent 32 ae690a8c4a18
--- a/mmlibs/mmfw/src/Plugin/StdSourceAndSink/fileaccess.cpp	Fri Jul 09 13:09:11 2010 +0100
+++ b/mmlibs/mmfw/src/Plugin/StdSourceAndSink/fileaccess.cpp	Mon Aug 23 18:56:36 2010 +0100
@@ -14,6 +14,7 @@
 //
 
 #include <f32file.h>
+#include <f32file64.h>
 #include <e32std.h>
 #include <caf/attribute.h>
 #include <caf/bitset.h>
@@ -147,9 +148,10 @@
 CContentFile::~CContentFile()
 	{
 	delete iData;
-
-	if (iLegacyFileOpen)
-		iLegacyFile.Close();
+  
+  iLegacyFile.Close();
+	iFile64.Close(); //For defect EASA-84ZC6J 
+   	
 	delete iFilePath;
 	}
 	
@@ -269,12 +271,35 @@
 RFile& CContentFile::FileL() 
 	{
 	if (!iLegacyFileOpen)
-		{
-  		User::LeaveIfError(iLegacyFile.Open(*iSession, *iFilePath, EFileRead | EFileStream | EFileShareReadersOrWriters));
-		iLegacyFileOpen = ETrue;
+		{//For defect EASA-84ZC6J 
+  		TInt error = iLegacyFile.Open(*iSession, *iFilePath, EFileRead | EFileStream | EFileShareReadersOrWriters);
+		  if ( error == KErrTooBig )
+	        {
+	         User::LeaveIfError(iFile64.Open(*iSession, *iFilePath, EFileRead | EFileStream | EFileShareReadersOrWriters));
+	         iLegacyFileOpen = ETrue;
+	         return iFile64;
+	        }
+	    
+	    else if (error == KErrNone)
+	       {
+	       iLegacyFileOpen = ETrue;
+	       return iLegacyFile;
+	        }
+	    
+	    else 
+	        {
+	        User::Leave(error);
+	        }
 		}
-	return iLegacyFile;
-	}
+	if(iLegacyFile.SubSessionHandle())
+	    {
+	    return iLegacyFile;
+	    }
+	else
+	    {
+	    return iFile64;
+	    }
+}
 	
 TInt CContentFile::Data(CData*& aData)
 	{