From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Paul Eggert Newsgroups: gmane.emacs.devel Subject: Re: Mysterious gzipped images Date: Thu, 08 Aug 2013 06:22:12 -0700 Organization: UCLA Computer Science Department Message-ID: <52039B84.4070603@cs.ucla.edu> References: <87mwoul8sz.fsf@igel.home> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Trace: ger.gmane.org 1375968156 32649 80.91.229.3 (8 Aug 2013 13:22:36 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Thu, 8 Aug 2013 13:22:36 +0000 (UTC) Cc: emacs-devel@gnu.org To: Lars Magne Ingebrigtsen Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Thu Aug 08 15:22:37 2013 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1V7QAn-0002Zu-AK for ged-emacs-devel@m.gmane.org; Thu, 08 Aug 2013 15:22:37 +0200 Original-Received: from localhost ([::1]:44378 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1V7QAj-0000eN-Tc for ged-emacs-devel@m.gmane.org; Thu, 08 Aug 2013 09:22:33 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:45493) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1V7QAa-0000Vc-H6 for emacs-devel@gnu.org; Thu, 08 Aug 2013 09:22:32 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1V7QAQ-0007Ih-Qp for emacs-devel@gnu.org; Thu, 08 Aug 2013 09:22:24 -0400 Original-Received: from smtp.cs.ucla.edu ([131.179.128.62]:60750) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1V7QAQ-0007IW-KW for emacs-devel@gnu.org; Thu, 08 Aug 2013 09:22:14 -0400 Original-Received: from localhost (localhost.localdomain [127.0.0.1]) by smtp.cs.ucla.edu (Postfix) with ESMTP id 95777A60003; Thu, 8 Aug 2013 06:22:13 -0700 (PDT) X-Virus-Scanned: amavisd-new at smtp.cs.ucla.edu Original-Received: from smtp.cs.ucla.edu ([127.0.0.1]) by localhost (smtp.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 7IlUY0gNEj8Z; Thu, 8 Aug 2013 06:22:13 -0700 (PDT) Original-Received: from [192.168.1.9] (pool-71-108-49-126.lsanca.fios.verizon.net [71.108.49.126]) by smtp.cs.ucla.edu (Postfix) with ESMTPSA id 11959A60002; Thu, 8 Aug 2013 06:22:13 -0700 (PDT) User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130803 Thunderbird/17.0.8 In-Reply-To: X-Enigmail-Version: 1.5.2 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 131.179.128.62 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:162499 Archived-At: 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.