From: Vincent van Ravesteijn <vfr@lyx.org>
To: Junio C Hamano <gitster@pobox.com>
Cc: Andreas Schwab <schwab@linux-m68k.org>,
git@vger.kernel.org, msysgit@googlegroups.com,
kusmabite@gmail.com, Johannes.Schindelin@gmx.de
Subject: Re: [PATCH 1/2] MSVC: Do not close stdout to prevent a crash
Date: Sat, 19 Nov 2011 21:52:29 +0100 [thread overview]
Message-ID: <4EC8170D.3070906@lyx.org> (raw)
In-Reply-To: <7v39dkj5ad.fsf@alter.siamese.dyndns.org>
Op 19-11-2011 20:11, Junio C Hamano schreef:
> ... This happens for 'format-patch' which closes stdout after a call to
> freopen which directs stdout to the format patch file.
>> It shouldn't do that in the first place. This is an error on any
>> platform.
> Correct. The clean-up codepath is for built-in command implementations
> that write out their result and return 0 to signal success. If we let the
> crt0 to run its usual clean-ups like closing the standard output stream,
> we wouldn't be able to catch errors from there.
>
> For built-ins that perform their own clean-ups, it is their responsibility
> to be careful, hence we skip this part of the code.
>
> We have relied on fstat(-1,&st) to correctly error out, and if MSVC build
> crashes, it is a bug in its fstat() emulation, I would think.
This doesn't work because fileno(stdout) returns 1 no matter whether we
closed stdout or not.
My reasoning for the proposed patch is that we call freopen(..., stdout)
for each patch file to write, but we only call fclose(stdout) once. Sp,
I concluded that it is not necessary to close stdout and that we just
need to redirect any new output to stdout.
Vincent
next prev parent reply other threads:[~2011-11-19 20:52 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-11-19 13:45 [PATCH 1/2] MSVC: Do not close stdout to prevent a crash Vincent van Ravesteijn
2011-11-19 13:52 ` [PATCH 2/2] MSVC: Use _putenv instead of putenv " Vincent van Ravesteijn
2011-11-19 14:41 ` [PATCH 1/2] MSVC: Do not close stdout " Andreas Schwab
2011-11-19 19:11 ` Junio C Hamano
2011-11-19 20:16 ` Andreas Schwab
2011-11-20 3:27 ` Junio C Hamano
2011-11-20 9:05 ` Andreas Schwab
2011-11-20 9:27 ` [msysGit] " Johannes Sixt
2011-11-20 21:10 ` Junio C Hamano
2011-11-19 20:52 ` Vincent van Ravesteijn [this message]
2011-11-19 20:11 ` [msysGit] " Johannes Sixt
2011-11-22 6:45 ` Vincent van Ravesteijn
2011-11-22 20:24 ` Johannes Sixt
2011-11-22 21:27 ` Vincent van Ravesteijn
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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4EC8170D.3070906@lyx.org \
--to=vfr@lyx.org \
--cc=Johannes.Schindelin@gmx.de \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=kusmabite@gmail.com \
--cc=msysgit@googlegroups.com \
--cc=schwab@linux-m68k.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.
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 NNTP newsgroup(s).