From d09bdf7c28e93a2bd04ba98284f1bb9e277f97e9 Mon Sep 17 00:00:00 2001 From: Witold Filipczyk Date: Sun, 18 Dec 2005 17:03:34 +0100 Subject: [PATCH] Fix problem with double decompression of local files ELinks tries decompress local gziped files twice, which causes problems with some files eg. with this README.gz. This patch prevents it. --- src/document/renderer.c | 32 +++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/src/document/renderer.c b/src/document/renderer.c index 58db6d95..07e53bfe 100644 --- a/src/document/renderer.c +++ b/src/document/renderer.c @@ -205,7 +205,6 @@ render_encoded_document(struct cache_entry *cached, struct document *document) { struct uri *uri = cached->uri; enum stream_encoding encoding = ENCODING_NONE; - unsigned char *extension; struct fragment *fragment = get_cache_fragment(cached); struct string buffer = INIT_STRING("", 0); @@ -216,23 +215,26 @@ render_encoded_document(struct cache_entry *cached, struct document *document) buffer.length = fragment->length; } - extension = get_extension_from_uri(uri); - if (extension) { - encoding = guess_encoding(extension); - mem_free(extension); - } + if (uri->protocol != PROTOCOL_FILE) { + unsigned char *extension = get_extension_from_uri(uri); - if (encoding != ENCODING_NONE) { - int length = 0; - unsigned char *source; + if (extension) { + encoding = guess_encoding(extension); + mem_free(extension); + } - source = decode_encoded_buffer(encoding, buffer.source, + if (encoding != ENCODING_NONE) { + int length = 0; + unsigned char *source; + + source = decode_encoded_buffer(encoding, buffer.source, buffer.length, &length); - if (source) { - buffer.source = source; - buffer.length = length; - } else { - encoding = ENCODING_NONE; + if (source) { + buffer.source = source; + buffer.length = length; + } else { + encoding = ENCODING_NONE; + } } }