mirror of
https://github.com/SubtitleEdit/subtitleedit.git
synced 2024-11-23 03:33:18 +01:00
Fix two "unsafe" methods to "safe" methods
This commit is contained in:
parent
fb06324d2d
commit
f392f4ccc7
@ -599,13 +599,23 @@ namespace Nikse.SubtitleEdit.Core.ContainerFormats.Matroska
|
|||||||
/// position of the stream by four bytes.
|
/// position of the stream by four bytes.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns>A 4-byte floating point value read from the current stream.</returns>
|
/// <returns>A 4-byte floating point value read from the current stream.</returns>
|
||||||
private unsafe float ReadFloat32()
|
private float ReadFloat32()
|
||||||
{
|
{
|
||||||
var data = new byte[4];
|
var data = new byte[4];
|
||||||
_stream.Read(data, 0, 4);
|
_stream.Read(data, 0, 4);
|
||||||
|
|
||||||
var result = data[0] << 24 | data[1] << 16 | data[2] << 8 | data[3];
|
// old unsafe code
|
||||||
return *(float*)&result;
|
// var result = data[0] << 24 | data[1] << 16 | data[2] << 8 | data[3];
|
||||||
|
// return *(float*)&result;
|
||||||
|
if (BitConverter.IsLittleEndian)
|
||||||
|
{
|
||||||
|
var data2 = new[] { data[3], data[2], data[1], data[0] };
|
||||||
|
return BitConverter.ToSingle(data2, 0);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return BitConverter.ToSingle(data, 0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -613,15 +623,25 @@ namespace Nikse.SubtitleEdit.Core.ContainerFormats.Matroska
|
|||||||
/// position of the stream by eight bytes.
|
/// position of the stream by eight bytes.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns>A 8-byte floating point value read from the current stream.</returns>
|
/// <returns>A 8-byte floating point value read from the current stream.</returns>
|
||||||
private unsafe double ReadFloat64()
|
private double ReadFloat64()
|
||||||
{
|
{
|
||||||
var data = new byte[8];
|
var data = new byte[8];
|
||||||
_stream.Read(data, 0, 8);
|
_stream.Read(data, 0, 8);
|
||||||
|
|
||||||
var lo = data[0] << 24 | data[1] << 16 | data[2] << 8 | data[3];
|
// old unsafe code
|
||||||
var hi = data[4] << 24 | data[5] << 16 | data[6] << 8 | data[7];
|
//var lo = data[0] << 24 | data[1] << 16 | data[2] << 8 | data[3];
|
||||||
var result = (uint)hi | (long)lo << 32;
|
//var hi = data[4] << 24 | data[5] << 16 | data[6] << 8 | data[7];
|
||||||
return *(double*)&result;
|
//var result = (uint)hi | (long)lo << 32;
|
||||||
|
//return *(double*)&result;
|
||||||
|
if (BitConverter.IsLittleEndian)
|
||||||
|
{
|
||||||
|
var data2 = new[] { data[7], data[6], data[5], data[4], data[3], data[2], data[1], data[0] };
|
||||||
|
return BitConverter.ToDouble(data2, 0);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return BitConverter.ToDouble(data, 0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
Loading…
Reference in New Issue
Block a user