fixed non solid compression using bzip2 or lzma
git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@3359 212acab6-be3b-0410-9dea-997c60f758d6
This commit is contained in:
parent
d79b582a67
commit
5391b3569f
2 changed files with 14 additions and 2 deletions
|
@ -7,6 +7,7 @@
|
||||||
class CBzip2 : public ICompressor {
|
class CBzip2 : public ICompressor {
|
||||||
public:
|
public:
|
||||||
int Init(int level) {
|
int Init(int level) {
|
||||||
|
last_ret = !BZ_STREAM_END;
|
||||||
stream = new bz_stream;
|
stream = new bz_stream;
|
||||||
if (!stream) return BZ_MEM_ERROR;
|
if (!stream) return BZ_MEM_ERROR;
|
||||||
return BZ2_bzCompressInit(stream, level, 0, 30);
|
return BZ2_bzCompressInit(stream, level, 0, 30);
|
||||||
|
@ -19,7 +20,11 @@ class CBzip2 : public ICompressor {
|
||||||
}
|
}
|
||||||
|
|
||||||
int Compress(BOOL finish) {
|
int Compress(BOOL finish) {
|
||||||
return BZ2_bzCompress(stream, finish?BZ_FINISH:0);
|
// act like zlib when it comes to stream ending
|
||||||
|
if (last_ret == BZ_STREAM_END)
|
||||||
|
return BZ_STREAM_END;
|
||||||
|
last_ret = BZ2_bzCompress(stream, finish?BZ_FINISH:0);
|
||||||
|
return last_ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SetNextIn(char *in, unsigned int size) {
|
void SetNextIn(char *in, unsigned int size) {
|
||||||
|
@ -50,6 +55,7 @@ class CBzip2 : public ICompressor {
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bz_stream *stream;
|
bz_stream *stream;
|
||||||
|
int last_ret;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
|
@ -159,7 +159,13 @@ public:
|
||||||
int Compress(BOOL flush)
|
int Compress(BOOL flush)
|
||||||
{
|
{
|
||||||
if (compressor_finished)
|
if (compressor_finished)
|
||||||
return -1;
|
{
|
||||||
|
// act like zlib when it comes to stream ending
|
||||||
|
if (flush)
|
||||||
|
return C_OK;
|
||||||
|
else
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
if (!hCompressionThread)
|
if (!hCompressionThread)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue