diff options
| author | Maxime Coste <frrrwww@gmail.com> | 2015-12-12 16:53:18 +0000 |
|---|---|---|
| committer | Maxime Coste <frrrwww@gmail.com> | 2015-12-12 16:53:18 +0000 |
| commit | 37210218fd620a2cb88cd3f9c928a3d960487e4f (patch) | |
| tree | b7b700498c0c3893e768ade8fd10c50465f0bdff /src | |
| parent | 4cb74623bbfd489b46edfadde5529e07a0dc557a (diff) | |
| parent | bd56ed5faded9a0da2f6071d1816a9308afb0187 (diff) | |
Merge remote-tracking branch 'lenormf/fix-face-format-check'
Diffstat (limited to 'src')
| -rw-r--r-- | src/face_registry.cc | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/face_registry.cc b/src/face_registry.cc index 5e10c540..cf404e63 100644 --- a/src/face_registry.cc +++ b/src/face_registry.cc @@ -9,10 +9,15 @@ namespace Kakoune static Face parse_face(StringView facedesc) { + constexpr StringView invalid_face_error = "invalid face description, expected <fg>[,<bg>][+<attr>]"; auto bg_it = find(facedesc, ','); auto attr_it = find(facedesc, '+'); - if (bg_it != facedesc.end() and attr_it < bg_it) - throw runtime_error("invalid face description, expected <fg>[,<bg>][+<attr>]"); + if (bg_it != facedesc.end() + and (attr_it < bg_it or (bg_it + 1) == facedesc.end())) + throw runtime_error(invalid_face_error.str()); + if (attr_it != facedesc.end() + and (attr_it + 1) == facedesc.end()) + throw runtime_error(invalid_face_error.str()); Face res; res.fg = attr_it != facedesc.begin() ? str_to_color({facedesc.begin(), std::min(attr_it, bg_it)}) : Color::Default; |
