diff --git a/srcpkgs/ddd/patches/gcc9-ftbfs.patch b/srcpkgs/ddd/patches/gcc9-ftbfs.patch new file mode 100644 index 0000000000..e369269e53 --- /dev/null +++ b/srcpkgs/ddd/patches/gcc9-ftbfs.patch @@ -0,0 +1,101 @@ +From: Sophie Brun +Date: Mon, 30 Sep 2019 16:17:19 +0200 +Subject: Fix ftbfs with GCC-9 + +Last-Update: 2019-10-01 +Description: +"If a friend declaration specifies a default, it must be a friend +function definition, and no other declarations of this function are +allowed in the translation unit." +Remove default values from declaration and change these functions calls +in the code to add default values if not overwritten. +--- + ddd/DispValue.C | 4 ++-- + ddd/complete.C | 2 +- + ddd/exit.C | 2 +- + ddd/strclass.C | 1 + + ddd/strclass.h | 10 ++++++---- + 5 files changed, 11 insertions(+), 8 deletions(-) + +diff --git a/ddd/DispValue.C b/ddd/DispValue.C +index de25768..2656242 100644 +--- ddd/DispValue.C ++++ ddd/DispValue.C +@@ -1432,8 +1432,8 @@ void DispValue::get_index_surroundings(string& prefix, string& suffix) const + + for (int i = 1; i < nchildren(); i++) + { +- prefix = common_prefix(prefix, child(i)->full_name()); +- suffix = common_suffix(suffix, child(i)->full_name()); ++ prefix = common_prefix(prefix, child(i)->full_name(), 0); ++ suffix = common_suffix(suffix, child(i)->full_name(), -1); + } + } + +diff --git a/ddd/complete.C b/ddd/complete.C +index b161e74..4bde5ff 100644 +--- ddd/complete.C ++++ ddd/complete.C +@@ -354,7 +354,7 @@ static void complete_reply(const string& complete_answer, void *qu_data) + string common_pfx = completions[0]; + int i; + for (i = 1; i < completions_size; i++) +- common_pfx = common_prefix(common_pfx, completions[i]); ++ common_pfx = common_prefix(common_pfx, completions[i], 0); + + if (completions_size > 1 && input == common_pfx) + { +diff --git a/ddd/exit.C b/ddd/exit.C +index f490c23..664f203 100644 +--- ddd/exit.C ++++ ddd/exit.C +@@ -478,7 +478,7 @@ void get_core_pattern(int signal) + str_func_ret = "core"; + } + else { +- readline(patternfile, pattern); ++ readline(patternfile, pattern, '\n', 1); + core_pat = pattern.chars(); + while(*core_pat) + { +diff --git a/ddd/strclass.C b/ddd/strclass.C +index be0bade..dfbb054 100644 +--- ddd/strclass.C ++++ ddd/strclass.C +@@ -1563,6 +1563,7 @@ std::istream& operator>>(std::istream& s, string& x) + return s; + } + ++ + int readline(std::istream& s, string& x, char terminator, int discard) + { + assert(!x.consuming()); +diff --git a/ddd/strclass.h b/ddd/strclass.h +index 7ef16fa..035a17e 100644 +--- ddd/strclass.h ++++ ddd/strclass.h +@@ -811,9 +811,11 @@ public: + const regex& sep); + + friend string common_prefix(const string& x, const string& y, +- int startpos = 0); ++ int startpos); ++ + friend string common_suffix(const string& x, const string& y, +- int startpos = -1); ++ int startpos); ++ + friend string replicate(char c, int n); + friend string replicate(const string& y, int n); + friend string join(const string *src, int n, const string& sep); +@@ -864,8 +866,8 @@ public: + friend std::istream& operator>>(std::istream& s, string& x); + + friend int readline(std::istream& s, string& x, +- char terminator = '\n', +- int discard_terminator = 1); ++ char terminator, ++ int discard_terminator); + + // Status + unsigned int length() const;