summaryrefslogtreecommitdiffhomepage
path: root/src/Xmobar/X11/Parsers.hs
diff options
context:
space:
mode:
authorSibi Prabakaran <sibi@psibi.in>2020-05-10 19:43:56 +0530
committerSibi Prabakaran <sibi@psibi.in>2020-05-10 19:43:56 +0530
commit3e9e1cb9d300e13109206496d825351c4f41cc1c (patch)
treed40f6c9f185ea4b01b6652e4178a5f28e450c8fa /src/Xmobar/X11/Parsers.hs
parent6f3b730415147041ff34558fe7292a76dc87b1f0 (diff)
downloadxmobar-3e9e1cb9d300e13109206496d825351c4f41cc1c.tar.gz
xmobar-3e9e1cb9d300e13109206496d825351c4f41cc1c.tar.bz2
Fix crashes/busy looping happening via index
Right now, with the `StdinReader` plugin enabled - you can crash/cause busy looping of xmobar if the following html file is opened: ``` <html> <head> <title>hello <fn=1>string</fn> </title> </head> </html> ``` More details about this bug is here: https://github.com/jaor/xmobar/issues/442#issuecomment-625706001 This MR also fixes another bug which produces a crash in xmobar if you pass non integer items between fn: <fn=crash>
Diffstat (limited to 'src/Xmobar/X11/Parsers.hs')
-rw-r--r--src/Xmobar/X11/Parsers.hs3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/Xmobar/X11/Parsers.hs b/src/Xmobar/X11/Parsers.hs
index 7fa42d7..4c8a130 100644
--- a/src/Xmobar/X11/Parsers.hs
+++ b/src/Xmobar/X11/Parsers.hs
@@ -21,6 +21,7 @@ import Xmobar.X11.Actions
import Control.Monad (guard, mzero)
import Text.ParserCombinators.Parsec
+import Text.Read (readMaybe)
import Graphics.X11.Types (Button)
data Widget = Icon String | Text String
@@ -138,7 +139,7 @@ fontParser :: ColorString -> Maybe [Action]
-> Parser [(Widget, ColorString, FontIndex, Maybe [Action])]
fontParser c a = do
f <- between (string "<fn=") (string ">") colors
- s <- manyTill (allParsers c (read f) a) (try $ string "</fn>")
+ s <- manyTill (allParsers c (maybe 0 id $ readMaybe f) a) (try $ string "</fn>")
return (concat s)
-- | Parses a color specification (hex or named)