[PATCH 3/7] ntdll: fix endianness of three fields in DVD_LAYER_DESCRIPTOR (resend)

Dan Kegel dank at kegel.com
Fri Feb 10 14:30:29 CST 2012


---
 dlls/ntdll/cdrom.c |   12 +++++++++---
 1 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/dlls/ntdll/cdrom.c b/dlls/ntdll/cdrom.c
index 802782b..6b64203c 100644
--- a/dlls/ntdll/cdrom.c
+++ b/dlls/ntdll/cdrom.c
@@ -144,6 +144,12 @@ WINE_DEFAULT_DEBUG_CHANNEL(cdrom);
 # define CD_FRAMES            75 /* frames per second */
 #endif
 
+#ifdef WORDS_BIGENDIAN
+#define GET_BE_DWORD(x) (x)
+#else
+#define GET_BE_DWORD(x) RtlUlongByteSwap(x)
+#endif
+
 static const struct iocodexs
 {
   DWORD code;
@@ -2568,9 +2574,9 @@ static NTSTATUS DVD_ReadStructure(int dev, const DVD_READ_STRUCTURE *structure,
             p->Reserved1 = 0;
             p->TrackDensity = l->track_density;
             p->LinearDensity = l->linear_density;
-            p->StartingDataSector = l->start_sector;
-            p->EndDataSector = l->end_sector;
-            p->EndLayerZeroSector = l->end_sector_l0;
+            p->StartingDataSector = GET_BE_DWORD(l->start_sector);
+            p->EndDataSector = GET_BE_DWORD(l->end_sector);
+            p->EndLayerZeroSector = GET_BE_DWORD(l->end_sector_l0);
             p->Reserved5 = 0;
             p->BCAFlag = l->bca;
             p->Reserved6 = 0;
-- 
1.7.9




More information about the wine-patches mailing list