Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 19 Sep 2019 19:39:34 +0000 (UTC)
From:      Dimitry Andric <dim@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r352538 - projects/clang900-import/contrib/libc++/include
Message-ID:  <201909191939.x8JJdYMT090662@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: dim
Date: Thu Sep 19 19:39:34 2019
New Revision: 352538
URL: https://svnweb.freebsd.org/changeset/base/352538

Log:
  Partially undo r351659, which unconditionally removed gets(3) from libc++.
  
  Instead, pull in r371324 from upstream libc++ trunk (by me):
  
    Remove ::gets for FreeBSD 13 and later
  
    Summary:
  
    In https://svnweb.freebsd.org/changeset/base/351659 @emaste removed
    gets() from FreeBSD 13's libc, and our copies of libc++ and
    libstdc++.  In that change, the declarations were simply deleted, but
    I would like to propose this conditional test instead.
  
    Reviewers: EricWF, mclow.lists, emaste
  
    Reviewed By: mclow.lists
  
    Subscribers: krytarowski, christof, ldionne, emaste, libcxx-commits
  
    Differential Revision: https://reviews.llvm.org/D67316
  
  This makes these changes more MFCable.

Modified:
  projects/clang900-import/contrib/libc++/include/__config
  projects/clang900-import/contrib/libc++/include/cstdio

Modified: projects/clang900-import/contrib/libc++/include/__config
==============================================================================
--- projects/clang900-import/contrib/libc++/include/__config	Thu Sep 19 19:26:12 2019	(r352537)
+++ projects/clang900-import/contrib/libc++/include/__config	Thu Sep 19 19:39:34 2019	(r352538)
@@ -1129,6 +1129,13 @@ _LIBCPP_FUNC_VIS extern "C" void __sanitizer_annotate_
 #define _LIBCPP_HAS_NO_STDOUT
 #endif
 
+// Some systems do not provide gets() in their C library, for security reasons.
+#ifndef _LIBCPP_C_HAS_NO_GETS
+#  if defined(_LIBCPP_MSVCRT) || (defined(__FreeBSD__) && __FreeBSD__ >= 13)
+#    define _LIBCPP_C_HAS_NO_GETS
+#  endif
+#endif
+
 #if defined(__BIONIC__) || defined(__CloudABI__) ||                            \
     defined(__Fuchsia__) || defined(__wasi__) || defined(_LIBCPP_HAS_MUSL_LIBC)
 #define _LIBCPP_PROVIDES_DEFAULT_RUNE_TABLE

Modified: projects/clang900-import/contrib/libc++/include/cstdio
==============================================================================
--- projects/clang900-import/contrib/libc++/include/cstdio	Thu Sep 19 19:26:12 2019	(r352537)
+++ projects/clang900-import/contrib/libc++/include/cstdio	Thu Sep 19 19:39:34 2019	(r352538)
@@ -73,6 +73,7 @@ int fputc(int c, FILE* stream);
 int fputs(const char* restrict s, FILE* restrict stream);
 int getc(FILE* stream);
 int getchar(void);
+char* gets(char* s);  // removed in C++14
 int putc(int c, FILE* stream);
 int putchar(int c);
 int puts(const char* s);
@@ -151,6 +152,9 @@ using ::tmpnam;
 
 #ifndef _LIBCPP_HAS_NO_STDIN
 using ::getchar;
+#if _LIBCPP_STD_VER <= 11 && !defined(_LIBCPP_C_HAS_NO_GETS)
+using ::gets;
+#endif
 using ::scanf;
 using ::vscanf;
 #endif



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201909191939.x8JJdYMT090662>