unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#33133: 26.1.50; zlib-decompress-region too rigid
@ 2018-10-23 23:07 Katsumi Yamaoka
  2018-10-24  0:26 ` Noam Postavsky
  0 siblings, 1 reply; 8+ messages in thread
From: Katsumi Yamaoka @ 2018-10-23 23:07 UTC (permalink / raw)
  To: 33133; +Cc: Kevin Ryde

[-- Attachment #1: Type: text/plain, Size: 1663 bytes --]

Hi,

Whereas `gzip -d' does, zlib-decompress-region doesn't decompress
corrupted data of a certain kind.  For instance, visiting

https://www.gutenberg.org/no-such-page-exists

using eww shows raw gzipped data.  The data extracted is attached.
As for `gzip -d', it says "unexpected end of file" in stderr.
Here is a recipe to reproduce zlib-decompress-region not working:

(let ((buffer (get-buffer-create "*testing*"))
      (coding-system-for-read 'binary)
      (cw (selected-window))
      jka-compr-compression-info-list format-alist)
  (switch-to-buffer-other-window buffer)
  (erase-buffer)
  (set-buffer-multibyte nil)
  (insert-file-contents "/TEMP/corrupted-data.gz")
  (sit-for 1)
  (prog1
      (zlib-decompress-region (point-min) (point-max))
    (select-window cw)))

If there is no prospect to improve zlib-decompress-region, how
about this workaround?

--- url-http.el~	2018-09-12 07:48:16.110765500 +0000
+++ url-http.el	2018-10-23 23:04:48.060829900 +0000
@@ -951,7 +951,12 @@
 	(widen)
 	(goto-char (point-min))
 	(when (search-forward "\n\n")
-	  (zlib-decompress-region (point) (point-max)))))))
+	  (or (zlib-decompress-region (point) (point-max))
+	      (let ((coding-system-for-write 'binary)
+		    (coding-system-for-read 'binary)
+		    (default-process-coding-system (cons 'binary 'binary)))
+		(zerop (call-process-region (point) (point-max) "gzip"
+					    t '(t nil) nil "-d")))))))))
 
 ;; Miscellaneous
 (defun url-http-activate-callback ()


In GNU Emacs 26.1.50 (build 1, x86_64-unknown-cygwin, GTK+ Version 3.22.28)
 of 2018-10-22 built on localhost
Windowing system distributor 'The Cygwin/X Project', version 11.0.12001000

[-- Attachment #2: corrupted-data.gz --]
[-- Type: application/octet-stream, Size: 1667 bytes --]

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2019-04-03  2:09 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-10-23 23:07 bug#33133: 26.1.50; zlib-decompress-region too rigid Katsumi Yamaoka
2018-10-24  0:26 ` Noam Postavsky
2018-10-24  1:16   ` Katsumi Yamaoka
2018-10-27 21:48     ` Noam Postavsky
2018-10-28 15:41       ` Eli Zaretskii
2018-10-31  0:25         ` Noam Postavsky
2018-10-31 16:07           ` Eli Zaretskii
2019-04-03  2:09             ` Noam Postavsky

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).