From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Eli Zaretskii Newsgroups: gmane.emacs.bugs Subject: bug#13070: Use putenv+unsetenv instead of modifying environ directly Date: Sat, 08 Dec 2012 13:42:43 +0200 Message-ID: <83zk1olqh8.fsf@gnu.org> References: <50BD0C72.7070601@cs.ucla.edu> <50C2BBD9.8060401@cs.ucla.edu> Reply-To: Eli Zaretskii NNTP-Posting-Host: plane.gmane.org X-Trace: ger.gmane.org 1354967025 28852 80.91.229.3 (8 Dec 2012 11:43:45 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Sat, 8 Dec 2012 11:43:45 +0000 (UTC) Cc: 13070@debbugs.gnu.org, fabrice.popineau@gmail.com To: Paul Eggert Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Sat Dec 08 12:43:58 2012 Return-path: Envelope-to: geb-bug-gnu-emacs@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 1ThIp2-0003MI-SW for geb-bug-gnu-emacs@m.gmane.org; Sat, 08 Dec 2012 12:43:56 +0100 Original-Received: from localhost ([::1]:42129 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ThIoq-00061t-NU for geb-bug-gnu-emacs@m.gmane.org; Sat, 08 Dec 2012 06:43:44 -0500 Original-Received: from eggs.gnu.org ([208.118.235.92]:35330) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ThIon-00061c-0W for bug-gnu-emacs@gnu.org; Sat, 08 Dec 2012 06:43:42 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ThIol-0006F4-MY for bug-gnu-emacs@gnu.org; Sat, 08 Dec 2012 06:43:40 -0500 Original-Received: from debbugs.gnu.org ([140.186.70.43]:49722) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ThIol-0006Ez-JJ for bug-gnu-emacs@gnu.org; Sat, 08 Dec 2012 06:43:39 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.72) (envelope-from ) id 1ThIp8-0005S2-PV for bug-gnu-emacs@gnu.org; Sat, 08 Dec 2012 06:44:02 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Eli Zaretskii Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 08 Dec 2012 11:44:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 13070 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch Original-Received: via spool by 13070-submit@debbugs.gnu.org id=B13070.135496700820905 (code B ref 13070); Sat, 08 Dec 2012 11:44:02 +0000 Original-Received: (at 13070) by debbugs.gnu.org; 8 Dec 2012 11:43:28 +0000 Original-Received: from localhost ([127.0.0.1]:59973 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1ThIoZ-0005R7-AJ for submit@debbugs.gnu.org; Sat, 08 Dec 2012 06:43:27 -0500 Original-Received: from mtaout20.012.net.il ([80.179.55.166]:38273) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1ThIoW-0005Qz-M4 for 13070@debbugs.gnu.org; Sat, 08 Dec 2012 06:43:26 -0500 Original-Received: from conversion-daemon.a-mtaout20.012.net.il by a-mtaout20.012.net.il (HyperSendmail v2007.08) id <0MEP00I00MXRES00@a-mtaout20.012.net.il> for 13070@debbugs.gnu.org; Sat, 08 Dec 2012 13:42:59 +0200 (IST) Original-Received: from HOME-C4E4A596F7 ([87.69.4.28]) by a-mtaout20.012.net.il (HyperSendmail v2007.08) with ESMTPA id <0MEP00ISMN7ME520@a-mtaout20.012.net.il>; Sat, 08 Dec 2012 13:42:59 +0200 (IST) In-reply-to: <50C2BBD9.8060401@cs.ucla.edu> X-012-Sender: halo1@inter.net.il X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 140.186.70.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:68184 Archived-At: > Date: Fri, 07 Dec 2012 20:02:33 -0800 > From: Paul Eggert > CC: 13070@debbugs.gnu.org, Eli Zaretskii > > On 12/04/2012 05:51 AM, Fabrice Popineau wrote: > > Provided I added some unsetenv() function for w32. > > Can you just add $(BLD)/unsetenv.$(O) to GNULIBOBJS > in lib/makefile.w32-in, or something like that? No point in > having two implementations of unsetenv. I suspect the gnulib implementation won't work for Windows, for the same reasons the original code you are replacing didn't: it messes with the environ block, which is allocated on a heap that is different from the heap used by Emacs. Even if we don't use the gnulib putenv implementation, moving pointers in the environ block that belongs to the Windows runtime library is something I'd like to avoid if possible. However, I have just installed in trunk revision 111156 changes that add to w32.c an implementation of unsetenv, and a wrapper for putenv that makes it more Posix-compliant. So you can now commit your changes, and I believe they will work. > I've attached a revised patch (sans any change to makefile.w32-in), > relative to trunk bzr 111151. Thanks. > +void > +xputenv (char const *string) > +{ > + if (putenv ((char *) string) != 0) > + memory_full (0); > +} Shouldn't we refrain from signaling memory_full when errno is EINVAL? I'd suggest an eassert in that case. memory_full will emit a misleading diagnostic.