LZMA encode fix
This commit is contained in:
@@ -32,7 +32,7 @@ namespace nme
|
||||
{
|
||||
SizeT input_buffer_size = buffer_size(input_buffer);
|
||||
Byte* input_buffer_data = (Byte *)buffer_data(input_buffer);
|
||||
SizeT output_buffer_size = input_buffer_size + 1024;
|
||||
SizeT output_buffer_size = input_buffer_size + input_buffer_size / 5 + (1 << 16);
|
||||
Byte* output_buffer_data = (Byte *)malloc(output_buffer_size);
|
||||
SizeT props_size = 100;
|
||||
Byte* props_data = (Byte *)malloc(props_size);
|
||||
|
||||
@@ -63,10 +63,10 @@ namespace lime {
|
||||
SizeT inputBufferSize = data->Length ();
|
||||
Byte* inputBufferData = data->Data ();
|
||||
|
||||
result->Resize (inputBufferSize + inputBufferSize / 5 + (1 << 16));
|
||||
Bytes tempBuffer = Bytes (inputBufferSize + inputBufferSize / 5 + (1 << 16));
|
||||
|
||||
SizeT outputBufferSize = result->Length ();
|
||||
Byte* outputBufferData = result->Data ();
|
||||
SizeT outputBufferSize = tempBuffer.Length ();
|
||||
Byte* outputBufferData = tempBuffer.Data ();
|
||||
SizeT propsSize = 100;
|
||||
Byte* propsData = (Byte *)malloc (propsSize);
|
||||
Int64 uncompressedLength = inputBufferSize;
|
||||
@@ -81,12 +81,14 @@ namespace lime {
|
||||
ISzAlloc allocSmall = { LZMA_alloc, LZMA_free };
|
||||
ISzAlloc allocBig = { LZMA_alloc, LZMA_free };
|
||||
|
||||
LzmaEncode (outputBufferData + propsSize + 8, &outputBufferSize, inputBufferData, inputBufferSize, &props, propsData, &propsSize, props.writeEndMark, &progress, &allocSmall, &allocBig);
|
||||
|
||||
memcpy (outputBufferData, propsData, propsSize);
|
||||
WRITE_LE64 (outputBufferData + propsSize, uncompressedLength);
|
||||
LzmaEncode (outputBufferData, &outputBufferSize, inputBufferData, inputBufferSize, &props, propsData, &propsSize, props.writeEndMark, &progress, &allocSmall, &allocBig);
|
||||
|
||||
result->Resize (outputBufferSize + propsSize + 8);
|
||||
Byte* resultData = result->Data ();
|
||||
|
||||
memcpy (resultData, propsData, propsSize);
|
||||
WRITE_LE64 (resultData + propsSize, uncompressedLength);
|
||||
memcpy (resultData + propsSize + 8, outputBufferData, outputBufferSize);
|
||||
|
||||
free (propsData);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user