Lexer crash fix (#3900)

* input may return 0 for EOF

Stops overruns into fread from nothing.

* remove two trailing contexts

* fix up sgml tokens
This commit is contained in:
Ashe Connor
2017-11-10 22:11:32 +11:00
committed by GitHub
parent 0f4955e5d5
commit c9b3d19c6f
4 changed files with 260 additions and 6325 deletions

View File

@@ -47,15 +47,10 @@ task :samples => :compile do
File.write 'lib/linguist/samples.json', json
end
FLEX_MIN_VER = [2, 5, 39]
task :flex do
if `flex -V` !~ /^flex (\d+)\.(\d+)\.(\d+)/
if `flex -V` !~ /^flex \d+\.\d+\.\d+/
fail "flex not detected"
end
maj, min, rev = $1.to_i, $2.to_i, $3.to_i
if maj < FLEX_MIN_VER[0] || (maj == FLEX_MIN_VER[0] && (min < FLEX_MIN_VER[1] || (min == FLEX_MIN_VER[1] && rev < FLEX_MIN_VER[2])))
fail "building linguist's lexer requires at least flex #{FLEX_MIN_VER.join(".")}"
end
system "cd ext/linguist && flex tokenizer.l"
end