diff options
author | David Kalnischkies <david@kalnischkies.de> | 2015-04-07 18:31:12 +0200 |
---|---|---|
committer | David Kalnischkies <david@kalnischkies.de> | 2015-04-07 21:59:27 +0200 |
commit | 7e9b7ea8236a79580c4ca47712558096d66bad53 (patch) | |
tree | b1e034f91339279ac040e1c3a41959900bd9c03d | |
parent | 3af3768e1a0ae8519ac85fbe1eb4494eeb076fa2 (diff) | |
download | apt-7e9b7ea8236a79580c4ca47712558096d66bad53.tar.gz |
demote VectorizeString gcc attribute from const to pure
g++-5 generates a slightly broken libapt which doesn't split
architecture configurations correctly resulting in e.g. Packages files
requested for the bogus architecture 'amd64,i386' instead of for amd64
and i386.
The reason is an incorrectly applied attribute marking the function as
const, while functions with pointer arguments are not allowed to be
declared as such (note that char& is a char* in disguise). Demoting the
attribute to pure fixes this issue – better would be dropping the & from
char but that is an API change…
Neither earlier g++ versions nor clang use this attribute to generate
broken code, so we don't need a rebuild of dependencies or anything and
g++-5 isn't even included in jessie, but the effect is so strange and
apt popular enough to consider avoiding this problem anyhow.
-rw-r--r-- | apt-pkg/contrib/strutl.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/apt-pkg/contrib/strutl.h b/apt-pkg/contrib/strutl.h index 185cdc3fc..f4f80834b 100644 --- a/apt-pkg/contrib/strutl.h +++ b/apt-pkg/contrib/strutl.h @@ -79,7 +79,7 @@ bool TokSplitString(char Tok,char *Input,char **List, unsigned long ListMax); // split a given string by a char -std::vector<std::string> VectorizeString(std::string const &haystack, char const &split) APT_CONST; +std::vector<std::string> VectorizeString(std::string const &haystack, char const &split) APT_PURE; /* \brief Return a vector of strings from string "input" where "sep" * is used as the delimiter string. |