git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH 1/2] MSVC: Do not close stdout to prevent a crash

From
Vincent van Ravesteijn <vfr@lyx.org>
Date
Nov 19, 2011, 20:52 UTC
Message-ID
<4EC8170D.3070906@lyx.org>
In-Reply-To
<7v39dkj5ad.fsf@alter.siamese.dyndns.org>
Op 19-11-2011 20:11, Junio C Hamano schreef:
Show 14 quoted lines
> ... 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
Previous: Junio C HamanoNext: Johannes Sixt
Message 10 of 14 in “MSVC: Do not close stdout to prevent a crash”
  1. 1/2 MSVC: Do not close stdout to prevent a crashVincent van Ravesteijn, Nov 19, 2011
  2. 2/2 MSVC: Use _putenv instead of putenv to prevent a crashVincent van Ravesteijn, Nov 19, 2011
  3. Andreas SchwabNov 19, 2011
  4. Junio C HamanoNov 19, 2011
  5. Andreas SchwabNov 19, 2011
  6. Junio C HamanoNov 20, 2011
  7. Andreas SchwabNov 20, 2011
  8. Johannes SixtNov 20, 2011
  9. Junio C HamanoNov 20, 2011
  10. Vincent van RavesteijnNov 19, 2011
  11. Johannes SixtNov 19, 2011
  12. Vincent van RavesteijnNov 22, 2011
  13. Johannes SixtNov 22, 2011
  14. Vincent van RavesteijnNov 22, 2011

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.