unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Paul Eggert <eggert@cs.ucla.edu>
To: Lars Magne Ingebrigtsen <larsi@gnus.org>
Cc: emacs-devel@gnu.org
Subject: Re: Mysterious gzipped images
Date: Thu, 08 Aug 2013 06:22:12 -0700	[thread overview]
Message-ID: <52039B84.4070603@cs.ucla.edu> (raw)
In-Reply-To: <m3eha44ghm.fsf@stories.gnus.org>

On 08/08/2013 03:35 AM, Lars Magne Ingebrigtsen wrote:

>   out = (char *) malloc (BUFFER_SIZE);

BUFFER_SIZE is so small that you should just put the buffer on the
stack "char out[BUFFER_SIZE];".  That way, you don't need to worry
about freeing it later (e.g., on error).

Or better yet, why not use the gap as the output buffer?
That should avoid some unnecessary copying.

>   stream.avail_in = iend - istart;

On 64-bit platforms, this won't work on buffers larger than 4 GiB.
I suggest 'stream.avail_in = min (iend - istart, UINT_MAX);'
and then put the whole thing inside a loop that repeats
until the input buffer is exhausted.

Each time through the inner loop, it should QUIT so that the user can
interrupt.  You need a record_unwind_protect around the whole thing;
the unwind-protect should be the code that deletes any uncompressed
data already inserted and restores point.

>     case Z_STREAM_ERROR:
>     case Z_NEED_DICT:
>     case Z_DATA_ERROR:
>     case Z_MEM_ERROR:

Shouldn't an error be signaled for this sort of thing?
That would fit in with the unwind-protect.





  parent reply	other threads:[~2013-08-08 13:22 UTC|newest]

Thread overview: 46+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-08-06 22:20 Mysterious gzipped images Lars Magne Ingebrigtsen
2013-08-06 22:30 ` Lars Magne Ingebrigtsen
2013-08-06 23:05   ` Andreas Schwab
2013-08-06 23:38     ` Lars Magne Ingebrigtsen
2013-08-07  1:08       ` Lars Magne Ingebrigtsen
2013-08-07  8:51         ` Julien Danjou
2013-08-07 14:35         ` Stefan Monnier
2013-08-07 16:47           ` chad
2013-08-08 10:35           ` Lars Magne Ingebrigtsen
2013-08-08 10:57             ` Andreas Schwab
2013-08-11 19:44               ` Lars Magne Ingebrigtsen
2013-08-08 13:22             ` Paul Eggert [this message]
2013-08-08 14:06               ` Lars Magne Ingebrigtsen
2013-08-08 15:31                 ` Lars Magne Ingebrigtsen
2013-08-11 22:05                   ` Lars Magne Ingebrigtsen
2013-08-08 13:24             ` Romain Francoise
2013-08-08 13:28               ` Lars Magne Ingebrigtsen
2013-08-08 13:36                 ` Christopher Schmidt
2013-08-08 13:55                   ` Lars Magne Ingebrigtsen
2013-08-08 14:06                     ` Christopher Schmidt
2013-08-08 14:09                       ` Lars Magne Ingebrigtsen
2013-08-08 15:43                 ` Romain Francoise
2013-08-08 15:52                   ` Lars Magne Ingebrigtsen
2013-08-11 19:51                   ` Lars Magne Ingebrigtsen
2013-08-08 14:47             ` Stefan Monnier
2013-08-11 19:47               ` Lars Magne Ingebrigtsen
2013-08-12  0:54                 ` Stefan Monnier
2013-08-12 14:05                   ` Lars Magne Ingebrigtsen
2013-08-12 15:09                     ` Stefan Monnier
2013-08-12 15:20                     ` Eli Zaretskii
2013-08-12 16:27                       ` Lars Magne Ingebrigtsen
2013-08-12 16:42                         ` Eli Zaretskii
2013-08-12 12:13                 ` Eli Zaretskii
2013-08-12 12:21                   ` Eli Zaretskii
2013-08-12 13:06                     ` Lars Magne Ingebrigtsen
2013-08-12 13:29                       ` Eli Zaretskii
2013-08-13 23:40                       ` Lars Magne Ingebrigtsen
2013-08-14 13:09                         ` Lars Magne Ingebrigtsen
2013-08-14 15:12                           ` Eli Zaretskii
2013-08-17 15:01                             ` Lars Magne Ingebrigtsen
2013-08-17 15:27                               ` Eli Zaretskii
2013-08-17 17:04                                 ` Eli Zaretskii
2013-08-18 17:06                                   ` Lars Magne Ingebrigtsen
2013-08-07 18:25         ` Rüdiger Sonderfeld
2013-08-07 21:06           ` FFI (was: Mysterious gzipped images) Stefan Monnier
2013-08-08  0:50             ` Stephen J. Turnbull

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=52039B84.4070603@cs.ucla.edu \
    --to=eggert@cs.ucla.edu \
    --cc=emacs-devel@gnu.org \
    --cc=larsi@gnus.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).