[Matroska-cvs] [matroska] r1243 - trunk/libebml/src
mosu at matroska.org
mosu at matroska.org
Thu Mar 30 21:33:24 CEST 2006
Author: mosu
Date: 2006-03-30 23:33:22 +0400 (Thu, 30 Mar 2006)
New Revision: 1243
Modified:
trunk/libebml/src/EbmlFloat.cpp
Log:
Avoid pointer aliasing issues.
Modified: trunk/libebml/src/EbmlFloat.cpp
===================================================================
--- trunk/libebml/src/EbmlFloat.cpp 2006-03-30 19:05:11 UTC (rev 1242)
+++ trunk/libebml/src/EbmlFloat.cpp 2006-03-30 19:33:22 UTC (rev 1243)
@@ -70,11 +70,15 @@
if (Size == 4) {
float val = Value;
- big_int32 TmpToWrite(*((int32 *) &val));
+ int Tmp;
+ memcpy(&Tmp, &val, 4);
+ big_int32 TmpToWrite(Tmp);
output.writeFully(&TmpToWrite.endian(), Size);
} else if (Size == 8) {
double val = Value;
- big_int64 TmpToWrite(*((int64 *) &val));
+ int64 Tmp;
+ memcpy(&Tmp, &val, 8);
+ big_int64 TmpToWrite(Tmp);
output.writeFully(&TmpToWrite.endian(), Size);
}
@@ -103,13 +107,17 @@
big_int32 TmpRead;
TmpRead.Eval(Buffer);
int32 tmpp = int32(TmpRead);
- Value = *((float *) &tmpp);
+ float val;
+ memcpy(&val, &tmpp, 4);
+ Value = val;
bValueIsSet = true;
} else if (Size == 8) {
big_int64 TmpRead;
TmpRead.Eval(Buffer);
int64 tmpp = int64(TmpRead);
- Value = *((double *) &tmpp);
+ double val;
+ memcpy(&val, &tmpp, 8);
+ Value = val;
bValueIsSet = true;
}
}
More information about the Matroska-cvs
mailing list