]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Universal/Disk/UdfDxe/FileSystemOperations.c
MdeModulePkg UdfDxe: Fix VS2010/VS2012 build failure
[mirror_edk2.git] / MdeModulePkg / Universal / Disk / UdfDxe / FileSystemOperations.c
index 7d7f722188c5be79623282e5ea0ff6ee7fcacc71..4609580b30160c1cf3795a1e75dc9cfba923fd56 100644 (file)
@@ -22,11 +22,18 @@ FindAnchorVolumeDescriptorPointer (
   )\r
 {\r
   EFI_STATUS  Status;\r
-  UINT32      BlockSize = BlockIo->Media->BlockSize;\r
-  EFI_LBA     EndLBA = BlockIo->Media->LastBlock;\r
-  EFI_LBA     DescriptorLBAs[] = { 256, EndLBA - 256, EndLBA, 512 };\r
+  UINT32      BlockSize;\r
+  EFI_LBA     EndLBA;\r
+  EFI_LBA     DescriptorLBAs[4];\r
   UINTN       Index;\r
 \r
+  BlockSize = BlockIo->Media->BlockSize;\r
+  EndLBA = BlockIo->Media->LastBlock;\r
+  DescriptorLBAs[0] = 256;\r
+  DescriptorLBAs[1] = EndLBA - 256;\r
+  DescriptorLBAs[2] = EndLBA;\r
+  DescriptorLBAs[3] = 512;\r
+\r
   for (Index = 0; Index < ARRAY_SIZE (DescriptorLBAs); Index++) {\r
     Status = DiskIo->ReadDisk (\r
       DiskIo,\r
@@ -472,7 +479,7 @@ DuplicateFid (
 {\r
   *NewFileIdentifierDesc =\r
     (UDF_FILE_IDENTIFIER_DESCRIPTOR *)AllocateCopyPool (\r
-      GetFidDescriptorLength (FileIdentifierDesc), FileIdentifierDesc);\r
+      (UINTN) GetFidDescriptorLength (FileIdentifierDesc), FileIdentifierDesc);\r
 }\r
 \r
 //\r
@@ -809,7 +816,7 @@ GetAedAdsData (
   //\r
   // Allocate buffer to read in AED's data.\r
   //\r
-  *Data = AllocatePool (*Length);\r
+  *Data = AllocatePool ((UINTN) (*Length));\r
   if (*Data == NULL) {\r
     return EFI_OUT_OF_RESOURCES;\r
   }\r
@@ -818,7 +825,7 @@ GetAedAdsData (
     DiskIo,\r
     BlockIo->Media->MediaId,\r
     Offset,\r
-    *Length,\r
+    (UINTN) (*Length),\r
     *Data\r
     );\r
 }\r
@@ -844,7 +851,7 @@ GrowUpBufferToNextAd (
       return EFI_OUT_OF_RESOURCES;\r
     }\r
   } else {\r
-    *Buffer = ReallocatePool (Length, Length + ExtentLength, *Buffer);\r
+    *Buffer = ReallocatePool ((UINTN) Length, (UINTN) (Length + ExtentLength), *Buffer);\r
     if (*Buffer == NULL) {\r
       return EFI_OUT_OF_RESOURCES;\r
     }\r
@@ -886,6 +893,15 @@ ReadFile (
   LogicalBlockSize  = LV_BLOCK_SIZE (Volume, UDF_DEFAULT_LV_NUM);\r
   DoFreeAed         = FALSE;\r
 \r
+  //\r
+  // set BytesLeft to suppress incorrect compiler/analyzer warnings\r
+  //\r
+  BytesLeft = 0;\r
+  DataOffset = 0;\r
+  FilePosition = 0;\r
+  FinishedSeeking = FALSE;\r
+  Data = NULL;\r
+\r
   switch (ReadFileInfo->Flags) {\r
   case READ_FILE_GET_FILESIZE:\r
   case READ_FILE_ALLOCATE_AND_READ:\r
@@ -933,7 +949,7 @@ ReadFile (
       //\r
       // Allocate buffer for starting read data.\r
       //\r
-      ReadFileInfo->FileData = AllocatePool (Length);\r
+      ReadFileInfo->FileData = AllocatePool ((UINTN) Length);\r
       if (ReadFileInfo->FileData == NULL) {\r
         return EFI_OUT_OF_RESOURCES;\r
       }\r
@@ -941,7 +957,7 @@ ReadFile (
       //\r
       // Read all inline data into ReadFileInfo->FileData\r
       //\r
-      CopyMem (ReadFileInfo->FileData, Data, Length);\r
+      CopyMem (ReadFileInfo->FileData, Data, (UINTN) Length);\r
       ReadFileInfo->ReadLength = Length;\r
     } else if (ReadFileInfo->Flags == READ_FILE_SEEK_AND_READ) {\r
       //\r
@@ -951,13 +967,18 @@ ReadFile (
       CopyMem (\r
         ReadFileInfo->FileData,\r
         (VOID *)((UINT8 *)Data + ReadFileInfo->FilePosition),\r
-        ReadFileInfo->FileDataSize\r
+        (UINTN) ReadFileInfo->FileDataSize\r
         );\r
 \r
       ReadFileInfo->FilePosition += ReadFileInfo->FileDataSize;\r
+    } else {\r
+      ASSERT (FALSE);\r
+      return EFI_INVALID_PARAMETER;\r
     }\r
 \r
+    Status = EFI_SUCCESS;\r
     break;\r
+\r
   case LONG_ADS_SEQUENCE:\r
   case SHORT_ADS_SEQUENCE:\r
     //\r
@@ -1070,9 +1091,6 @@ ReadFile (
 \r
         if (FilePosition + ExtentLength > ReadFileInfo->FilePosition) {\r
           Offset = ReadFileInfo->FilePosition - FilePosition;\r
-          if (Offset < 0) {\r
-            Offset = -(Offset);\r
-          }\r
         } else {\r
           Offset = 0;\r
         }\r
@@ -1099,7 +1117,7 @@ ReadFile (
           DiskIo,\r
           BlockIo->Media->MediaId,\r
           Offset + MultU64x32 (Lsn, LogicalBlockSize),\r
-          DataLength,\r
+          (UINTN) DataLength,\r
           (VOID *)((UINT8 *)ReadFileInfo->FileData +\r
                    DataOffset)\r
           );\r
@@ -1138,6 +1156,14 @@ ReadFile (
     ASSERT (FALSE);\r
     Status = EFI_UNSUPPORTED;\r
     break;\r
+\r
+  default:\r
+    //\r
+    // A flag value reserved by the ECMA-167 standard (3rd Edition - June\r
+    // 1997); 14.6 ICB Tag; 14.6.8 Flags (RBP 18); was found.\r
+    //\r
+    Status = EFI_UNSUPPORTED;\r
+    break;\r
   }\r
 \r
 Done:\r