mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-06 11:23:45 +00:00
Do not pass a vector by value to getArgInset
Instead of passing the vector by value so that stuff can be added to it in the function, add required elements of arguments to a second vector. While we are at it, simplify the code a bit by using a range-for and auto keyword. Spotted by Coverity scan
This commit is contained in:
parent
54b6846941
commit
bc624cc780
@ -501,13 +501,10 @@ void TeXEnvironment(Buffer const & buf, Text const & text,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// FIXME: pass the \c required vector by reference and add the stuff
|
|
||||||
// from \c latexargs to a different vector. This avoids a copy and
|
|
||||||
// (more importantly?) a coverity defect.
|
|
||||||
void getArgInsets(otexstream & os, OutputParams const & runparams,
|
void getArgInsets(otexstream & os, OutputParams const & runparams,
|
||||||
Layout::LaTeXArgMap const & latexargs,
|
Layout::LaTeXArgMap const & latexargs,
|
||||||
map<size_t, lyx::InsetArgument const *> const & ilist,
|
map<size_t, lyx::InsetArgument const *> const & ilist,
|
||||||
vector<string> required, string const & prefix)
|
vector<string> const & required, string const & prefix)
|
||||||
{
|
{
|
||||||
size_t const argnr = latexargs.size();
|
size_t const argnr = latexargs.size();
|
||||||
if (argnr == 0)
|
if (argnr == 0)
|
||||||
@ -515,24 +512,24 @@ void getArgInsets(otexstream & os, OutputParams const & runparams,
|
|||||||
|
|
||||||
// Default and preset args are always output, so if they require
|
// Default and preset args are always output, so if they require
|
||||||
// other arguments, consider this.
|
// other arguments, consider this.
|
||||||
|
vector<string> required_args;
|
||||||
for (auto const & larg : latexargs) {
|
for (auto const & larg : latexargs) {
|
||||||
Layout::latexarg const & arg = larg.second;
|
Layout::latexarg const & arg = larg.second;
|
||||||
if ((!arg.presetarg.empty() || !arg.defaultarg.empty()) && !arg.required.empty()) {
|
if ((!arg.presetarg.empty() || !arg.defaultarg.empty()) && !arg.required.empty()) {
|
||||||
vector<string> req = getVectorFromString(arg.required);
|
vector<string> const req = getVectorFromString(arg.required);
|
||||||
required.insert(required.end(), req.begin(), req.end());
|
required_args.insert(required_args.end(), req.begin(), req.end());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (size_t i = 1; i <= argnr; ++i) {
|
for (size_t i = 1; i <= argnr; ++i) {
|
||||||
map<size_t, InsetArgument const *>::const_iterator lit = ilist.find(i);
|
auto const lit = ilist.find(i);
|
||||||
bool inserted = false;
|
bool inserted = false;
|
||||||
if (lit != ilist.end()) {
|
if (lit != ilist.end()) {
|
||||||
InsetArgument const * ins = lit->second;
|
InsetArgument const * ins = lit->second;
|
||||||
if (ins) {
|
if (ins) {
|
||||||
Layout::LaTeXArgMap::const_iterator const lait =
|
auto const lait = latexargs.find(ins->name());
|
||||||
latexargs.find(ins->name());
|
|
||||||
if (lait != latexargs.end()) {
|
if (lait != latexargs.end()) {
|
||||||
Layout::latexarg arg = lait->second;
|
Layout::latexarg const arg = lait->second;
|
||||||
docstring ldelim;
|
docstring ldelim;
|
||||||
docstring rdelim;
|
docstring rdelim;
|
||||||
if (!arg.nodelims) {
|
if (!arg.nodelims) {
|
||||||
@ -553,12 +550,10 @@ void getArgInsets(otexstream & os, OutputParams const & runparams,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!inserted) {
|
if (!inserted) {
|
||||||
Layout::LaTeXArgMap::const_iterator lait = latexargs.begin();
|
for (auto const & la_p : latexargs) {
|
||||||
Layout::LaTeXArgMap::const_iterator const laend = latexargs.end();
|
|
||||||
for (; lait != laend; ++lait) {
|
|
||||||
string const name = prefix + convert<string>(i);
|
string const name = prefix + convert<string>(i);
|
||||||
if ((*lait).first == name) {
|
if (la_p.first == name) {
|
||||||
Layout::latexarg arg = (*lait).second;
|
Layout::latexarg const arg = la_p.second;
|
||||||
docstring preset = arg.presetarg;
|
docstring preset = arg.presetarg;
|
||||||
if (!arg.defaultarg.empty()) {
|
if (!arg.defaultarg.empty()) {
|
||||||
if (!preset.empty())
|
if (!preset.empty())
|
||||||
@ -578,7 +573,9 @@ void getArgInsets(otexstream & os, OutputParams const & runparams,
|
|||||||
from_ascii("]") : arg.rdelim;
|
from_ascii("]") : arg.rdelim;
|
||||||
os << ldelim << preset << rdelim;
|
os << ldelim << preset << rdelim;
|
||||||
} else if (find(required.begin(), required.end(),
|
} else if (find(required.begin(), required.end(),
|
||||||
(*lait).first) != required.end()) {
|
la_p.first) != required.end()
|
||||||
|
|| find(required_args.begin(), required_args.end(),
|
||||||
|
la_p.first) != required_args.end()) {
|
||||||
docstring ldelim = arg.ldelim.empty() ?
|
docstring ldelim = arg.ldelim.empty() ?
|
||||||
from_ascii("[") : arg.ldelim;
|
from_ascii("[") : arg.ldelim;
|
||||||
docstring rdelim = arg.rdelim.empty() ?
|
docstring rdelim = arg.rdelim.empty() ?
|
||||||
|
Loading…
Reference in New Issue
Block a user