fixed a bunch of bugs that caused lzma and bzip2 not to function without solid compression

git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@3362 212acab6-be3b-0410-9dea-997c60f758d6
This commit is contained in:
kichik 2004-01-06 00:53:12 +00:00
parent e9919e7f89
commit dd8a4388ac
6 changed files with 42 additions and 14 deletions

View file

@ -244,7 +244,7 @@ const char * NSISCALL loadHeaders(int cl_flags)
data = (void *)my_GlobalAlloc(h.length_of_header);
#if defined(NSIS_CONFIG_COMPRESSION_SUPPORT) && defined(NSIS_COMPRESS_WHOLE)
#ifdef NSIS_COMPRESS_WHOLE
inflateReset(&g_inflate_stream);
{
@ -336,7 +336,8 @@ int NSISCALL _dodecomp(int offset, HANDLE hFileOut, char *outbuf, int outbuflen)
int l=min(input_len,IBUFSIZE);
int err;
if (!ReadSelfFile((LPVOID)inbuffer,l)) return -3;
if (!ReadSelfFile((LPVOID)inbuffer,l))
return -3;
g_inflate_stream.next_in = inbuffer;
g_inflate_stream.avail_in = l;
@ -345,6 +346,13 @@ int NSISCALL _dodecomp(int offset, HANDLE hFileOut, char *outbuf, int outbuflen)
for (;;)
{
int u;
#ifdef NSIS_COMPRESS_USE_LZMA
// lzma decompressor doesn't like to stay dry
if (!g_inflate_stream.avail_in && input_len)
break;
#endif
g_inflate_stream.next_out = outbuffer;
g_inflate_stream.avail_out = (unsigned int)outbuffer_len;