[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