From 47d32690b154bab52ddbb67c744d8d5704638f89 Mon Sep 17 00:00:00 2001 From: mental Date: Tue, 9 May 2006 02:51:10 +0000 Subject: [PATCH] use array new rather than dynamically-sized automatic arrays, plus cleanups and minor fixes --- ChangeLog | 7 +++++++ src/streams-jar.cpp | 34 ++++++++++++---------------------- src/streams-zlib.cpp | 20 ++++++++++++-------- 3 files changed, 31 insertions(+), 30 deletions(-) diff --git a/ChangeLog b/ChangeLog index 2d6256512..6ab6de7ba 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2006-05-08 MenTaLguY + + * src/streams-zlib.cpp, src/streams-jar.cpp: + + use array new rather than dynamically-sized automatic arrays, + plus cleanups and minor fixes + 2006-05-08 MenTaLguY * src/debug/demangle.cpp, src/debug/demangle.h, src/sp-object.cpp, diff --git a/src/streams-jar.cpp b/src/streams-jar.cpp index 712524cf0..521b1f9a9 100644 --- a/src/streams-jar.cpp +++ b/src/streams-jar.cpp @@ -16,27 +16,16 @@ void JarBuffer::consume_header() throw(JarHeaderException) check_signature(data); _urihandle->read(data+4, 26); compressed_size = compressed_left = unpack_4bytes(data, LOC_CSIZE); - guint16 filename_length = unpack_2bytes(data, LOC_FNLEN); eflen = unpack_2bytes(data, LOC_EFLEN); flags = unpack_2bytes(data, LOC_EXTRA); method = unpack_2bytes(data, LOC_COMP); #ifdef DEBUG_STREAMS std::printf("Compressed size is %u\n", compressed_size); - std::printf("Filename length is %hu\n", filename_length); std::printf("Extra field length is %hu\n", eflen); std::printf("Flags are %#hx\n", flags); std::printf("Compression method is %#hx\n", method); #endif - - //guint32 crc = check_crc(data, flags); - gchar filename[filename_length+1]; - _urihandle->read(filename, filename_length); - filename[filename_length] = '\0'; - -#ifdef DEBUG_STREAMS - std::printf("Filename is %s\n", filename); -#endif } catch (std::exception& e) { throw JarHeaderException(); @@ -89,11 +78,12 @@ int JarBuffer::consume_and_inflate() int JarBuffer::consume_compressed(int nbytes) { - int ret; + int ret=do_consume_and_inflate(nbytes); - if ((ret = do_consume_and_inflate(nbytes)) == EOF && eflen > 0) { - guint8 efbuf[eflen]; + if ( ret == EOF && eflen > 0 ) { + guint8 *efbuf=new guint8[eflen]; _urihandle->read(efbuf, eflen); + delete [] efbuf; return 1; } @@ -102,14 +92,14 @@ int JarBuffer::consume_compressed(int nbytes) int JarBuffer::consume_uncompressed(int nbytes) { - guint8 data[nbytes]; - if (consume(data, nbytes) == EOF) - return EOF; - - copy_to_get(data, nbytes); - compressed_left -= nbytes; - - return nbytes; + guint8 *data=new guint8[nbytes]; + int consumed=consume(data, nbytes); + if ( consumed != EOF ) { + copy_to_get(data, consumed); + compressed_left -= consumed; + } + delete [] data; + return consumed; } GByteArray *JarBuffer::inflate(guint8 *data, const int nbytes) diff --git a/src/streams-zlib.cpp b/src/streams-zlib.cpp index cbe6a75fe..5784a17cf 100644 --- a/src/streams-zlib.cpp +++ b/src/streams-zlib.cpp @@ -104,15 +104,19 @@ int ZlibBuffer::do_consume(guint8 *buf, int nbytes) int ZlibBuffer::do_consume_and_inflate(int nbytes) { - guint8 buf[nbytes]; - if (consume(buf, nbytes) == EOF) - return EOF; - - GByteArray *gba = inflate(buf, nbytes); - copy_to_get(gba->data, gba->len); + guint8 *buf=new guint8[nbytes]; + + int ret=consume(buf, nbytes); + + if ( ret != EOF ) { + ret = 1; + GByteArray *gba = inflate(buf, nbytes); + copy_to_get(gba->data, gba->len); + g_byte_array_free(gba, TRUE); + } - g_byte_array_free(gba, TRUE); - return 1; + delete [] buf; + return ret; } int ZlibBuffer::consume_and_inflate() -- 2.39.5