svn commit: r490604 - in head/shells/fish: . files
Alan Somers
asomers at FreeBSD.org
Thu Jan 17 20:40:44 UTC 2019
Author: asomers (src committer)
Date: Thu Jan 17 20:40:43 2019
New Revision: 490604
URL: https://svnweb.freebsd.org/changeset/ports/490604
Log:
shells/fish: patch upstream issue #5453
This change fixes a segfault that would happen from operations like
'printf "%f" 7.0'. Also, this change removes Python as a runtime
dependency. That was supposed to have been done in r488840, but there was a
typo.
https://github.com/fish-shell/fish-shell/issues/5453
Reported by: Mahmoud Al-Qudsi <mqudsi at neosmart.net>
MFH: 2019Q1
Added:
head/shells/fish/files/patch-src_fallback.cpp (contents, props changed)
head/shells/fish/files/patch-src_fallback.h (contents, props changed)
Modified:
head/shells/fish/Makefile
Modified: head/shells/fish/Makefile
==============================================================================
--- head/shells/fish/Makefile Thu Jan 17 20:25:26 2019 (r490603)
+++ head/shells/fish/Makefile Thu Jan 17 20:40:43 2019 (r490604)
@@ -3,6 +3,7 @@
PORTNAME= fish
PORTVERSION= 3.0.0
+PORTREVISION= 1
CATEGORIES= shells
MASTER_SITES= https://github.com/fish-shell/fish-shell/releases/download/${PORTVERSION}/
@@ -15,7 +16,7 @@ LIB_DEPENDS+= libpcre2-32.so:devel/pcre2
# The python dependency is only needed by shebangfix. At runtime python is
# only needed by some optional scripts that aren't in PATH.
-USES= cmake cpe ncurses python:3.4+:build \
+USES= cmake cpe ncurses python:3.4+,build \
localbase compiler:c++11-lang shebangfix
SHEBANG_FILES= share/tools/*.py share/tools/web_config/webconfig.py
Added: head/shells/fish/files/patch-src_fallback.cpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/shells/fish/files/patch-src_fallback.cpp Thu Jan 17 20:40:43 2019 (r490604)
@@ -0,0 +1,16 @@
+--- src/fallback.cpp
++++ src/fallback.cpp
+@@ -390,9 +390,10 @@ int flock(int fd, int op) {
+ #endif // HAVE_FLOCK
+
+ #ifndef HAVE_WCSTOD_L
+-// musl doesn't feature wcstod_l,
+-// so we just wrap wcstod.
+-double wcstod_l(const wchar_t *enptr, wchar_t **endptr, locale_t loc) {
++#undef wcstod_l
++// For platforms without wcstod_l C extension, wrap wcstod after changing the
++// thread-specific locale.
++double fish_compat::wcstod_l(const wchar_t *enptr, wchar_t **endptr, locale_t loc) {
+ char *saved_locale = strdup(setlocale(LC_NUMERIC, NULL));
+ // Yes, this is hardcoded to use the "C" locale.
+ // That's the only thing we need, and uselocale(loc) broke in my testing.
Added: head/shells/fish/files/patch-src_fallback.h
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/shells/fish/files/patch-src_fallback.h Thu Jan 17 20:40:43 2019 (r490604)
@@ -0,0 +1,19 @@
+--- src/fallback.h
++++ src/fallback.h
+@@ -200,5 +200,15 @@ int flock(int fd, int op);
+ #endif
+
+ #ifndef HAVE_WCSTOD_L
+-double wcstod_l(const wchar_t *enptr, wchar_t **endptr, locale_t loc);
++// On some platforms if this is incorrectly detected and a system-defined
++// defined version of `wcstod_l` exists, calling `wcstod` from our own
++// `wcstod_l` can call back into `wcstod_l` causing infinite recursion.
++// e.g. FreeBSD defines `wcstod(x, y)` as `wcstod_l(x, y, __get_locale())`.
++// Solution: namespace our implementation to make sure there is no symbol
++// duplication.
++#undef wcstod_l
++namespace fish_compat {
++ double wcstod_l(const wchar_t *enptr, wchar_t **endptr, locale_t loc);
++}
++#define wcstod_l(x, y, z) fish_compat::wcstod_l(x, y, z)
+ #endif
More information about the svn-ports-all
mailing list