Return false on invalid input in Font::fromString()

Fixes crash with invalid font-update lfun

(cherry picked from commit 2a9648fc4c)
This commit is contained in:
Juergen Spitzmueller 2024-06-09 08:09:01 +02:00 committed by Richard Kimberly Heck
parent e01397f1db
commit 5a69b8a184
2 changed files with 13 additions and 1 deletions

View File

@ -695,18 +695,26 @@ bool Font::fromString(string const & data, bool & toggle)
if (token == "family") {
int const next = lex.getInteger();
if (next == -1)
return false;
bits_.setFamily(FontFamily(next));
} else if (token == "series") {
int const next = lex.getInteger();
if (next == -1)
return false;
bits_.setSeries(FontSeries(next));
} else if (token == "shape") {
int const next = lex.getInteger();
if (next == -1)
return false;
bits_.setShape(FontShape(next));
} else if (token == "size") {
int const next = lex.getInteger();
if (next == -1)
return false;
bits_.setSize(FontSize(next));
// FIXME: shall style be handled there? Probably not.
} else if (token == "emph" || token == "underbar"
@ -716,6 +724,8 @@ bool Font::fromString(string const & data, bool & toggle)
|| token == "nospellcheck") {
int const next = lex.getInteger();
if (next == -1)
return false;
FontState const misc = FontState(next);
if (token == "emph")
@ -739,6 +749,8 @@ bool Font::fromString(string const & data, bool & toggle)
} else if (token == "color") {
int const next = lex.getInteger();
if (next == -1)
return false;
bits_.setColor(ColorCode(next));
/**

View File

@ -5988,7 +5988,7 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
toggleAndShow(cur, this, font, toggleall);
cur.message(bformat(_("Text properties applied: %1$s"), props));
} else
LYXERR0("Invalid argument of textstyle-update");
cur.message(_("Invalid argument of textstyle-update"));
break;
}