mirror of
https://github.com/ReneLergner/WPinternals.git
synced 2026-06-14 03:16:40 +10:00
fix: Handle empty flash part list
This is used to clear the red flashing status we need to handle this differently for spec A
This commit is contained in:
@@ -2657,50 +2657,53 @@ namespace WPinternals
|
|||||||
UInt64 totalwritten = 0;
|
UInt64 totalwritten = 0;
|
||||||
int ProgressPercentage = 0;
|
int ProgressPercentage = 0;
|
||||||
|
|
||||||
foreach (FlashPart Part in FlashParts)
|
if (FlashParts != null)
|
||||||
{
|
{
|
||||||
InputStreamLength += (ulong)Part.Stream.Length;
|
foreach (FlashPart Part in FlashParts)
|
||||||
}
|
|
||||||
|
|
||||||
foreach (FlashPart Part in FlashParts)
|
|
||||||
{
|
|
||||||
Stream InputStream = new DecompressedStream(Part.Stream);
|
|
||||||
|
|
||||||
if (InputStream != null)
|
|
||||||
{
|
{
|
||||||
using (InputStream)
|
InputStreamLength += (ulong)Part.Stream.Length;
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (FlashPart Part in FlashParts)
|
||||||
|
{
|
||||||
|
Stream InputStream = new DecompressedStream(Part.Stream);
|
||||||
|
|
||||||
|
if (InputStream != null)
|
||||||
{
|
{
|
||||||
const int FlashBufferSize = 0x200000; // Flash 8 GB phone -> buffersize 0x200000 = 11:45 min, buffersize 0x20000 = 12:30 min
|
using (InputStream)
|
||||||
byte[] FlashBuffer = new byte[FlashBufferSize];
|
|
||||||
int BytesRead;
|
|
||||||
UInt64 i = 0;
|
|
||||||
do
|
|
||||||
{
|
{
|
||||||
BytesRead = InputStream.Read(FlashBuffer, 0, FlashBufferSize);
|
const int FlashBufferSize = 0x200000; // Flash 8 GB phone -> buffersize 0x200000 = 11:45 min, buffersize 0x20000 = 12:30 min
|
||||||
|
byte[] FlashBuffer = new byte[FlashBufferSize];
|
||||||
byte[] FlashBufferFinalSize;
|
int BytesRead;
|
||||||
if (BytesRead > 0)
|
UInt64 i = 0;
|
||||||
|
do
|
||||||
{
|
{
|
||||||
if (BytesRead == FlashBufferSize)
|
BytesRead = InputStream.Read(FlashBuffer, 0, FlashBufferSize);
|
||||||
|
|
||||||
|
byte[] FlashBufferFinalSize;
|
||||||
|
if (BytesRead > 0)
|
||||||
{
|
{
|
||||||
FlashBufferFinalSize = FlashBuffer;
|
if (BytesRead == FlashBufferSize)
|
||||||
}
|
{
|
||||||
else
|
FlashBufferFinalSize = FlashBuffer;
|
||||||
{
|
}
|
||||||
FlashBufferFinalSize = new byte[BytesRead];
|
else
|
||||||
Buffer.BlockCopy(FlashBuffer, 0, FlashBufferFinalSize, 0, BytesRead);
|
{
|
||||||
|
FlashBufferFinalSize = new byte[BytesRead];
|
||||||
|
Buffer.BlockCopy(FlashBuffer, 0, FlashBufferFinalSize, 0, BytesRead);
|
||||||
|
}
|
||||||
|
|
||||||
|
FlashModel.FlashSectors((UInt32)(Part.StartSector + (i / 0x200)), FlashBufferFinalSize, ProgressPercentage);
|
||||||
}
|
}
|
||||||
|
|
||||||
FlashModel.FlashSectors((UInt32)(Part.StartSector + (i / 0x200)), FlashBufferFinalSize, ProgressPercentage);
|
UpdateWorkingStatus(Part.ProgressText, null, (uint)ProgressPercentage, WPinternalsStatus.Flashing);
|
||||||
|
totalwritten += (UInt64)FlashBuffer.Length / 0x200;
|
||||||
|
ProgressPercentage = (int)((double)totalwritten / (InputStreamLength / 0x200) * 100);
|
||||||
|
|
||||||
|
i += FlashBufferSize;
|
||||||
}
|
}
|
||||||
|
while (BytesRead == FlashBufferSize);
|
||||||
UpdateWorkingStatus(Part.ProgressText, null, (uint)ProgressPercentage, WPinternalsStatus.Flashing);
|
|
||||||
totalwritten += (UInt64)FlashBuffer.Length / 0x200;
|
|
||||||
ProgressPercentage = (int)((double)totalwritten / (InputStreamLength / 0x200) * 100);
|
|
||||||
|
|
||||||
i += FlashBufferSize;
|
|
||||||
}
|
}
|
||||||
while (BytesRead == FlashBufferSize);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user