#28 fix race conditions

This commit is contained in:
z7zmey 2018-06-06 19:47:28 +03:00
parent d72d3b7980
commit 58597aae21
6 changed files with 14 additions and 10 deletions

View File

@ -22,6 +22,8 @@ bench:
go test -benchmem -bench=. ./php7 go test -benchmem -bench=. ./php7
compile: ./php5/php5.go ./php7/php7.go ./scanner/scanner.go compile: ./php5/php5.go ./php7/php7.go ./scanner/scanner.go
sed -i '' -e 's/yyErrorVerbose = false/yyErrorVerbose = true/g' ./php7/php7.go
sed -i '' -e 's/yyErrorVerbose = false/yyErrorVerbose = true/g' ./php5/php5.go
rm -f y.output rm -f y.output
./scanner/scanner.go: ./scanner/scanner.l ./scanner/scanner.go: ./scanner/scanner.l

12
main.go
View File

@ -64,7 +64,11 @@ func parserWorker(pathCh <-chan string, result chan<- parser.Parser) {
var parserWorker parser.Parser var parserWorker parser.Parser
for { for {
path := <-pathCh path, ok := <-pathCh
if !ok {
return
}
src, _ := os.Open(path) src, _ := os.Open(path)
if *usePhp5 { if *usePhp5 {
@ -80,7 +84,11 @@ func parserWorker(pathCh <-chan string, result chan<- parser.Parser) {
func printer(result <-chan parser.Parser) { func printer(result <-chan parser.Parser) {
for { for {
parserWorker := <-result parserWorker, ok := <-result
if !ok {
return
}
fmt.Printf("==> %s\n", parserWorker.GetPath()) fmt.Printf("==> %s\n", parserWorker.GetPath())
for _, e := range parserWorker.GetErrors() { for _, e := range parserWorker.GetErrors() {

View File

@ -56,9 +56,6 @@ func (l *Parser) Error(msg string) {
// Parse the php7 Parser entrypoint // Parse the php7 Parser entrypoint
func (l *Parser) Parse() int { func (l *Parser) Parse() int {
yyDebug = 0
yyErrorVerbose = true
// init // init
l.errors = nil l.errors = nil
l.rootNode = nil l.rootNode = nil

View File

@ -1968,7 +1968,7 @@ var yyErrorMessages = [...]struct {
var ( var (
yyDebug = 0 yyDebug = 0
yyErrorVerbose = false yyErrorVerbose = true
) )
type yyLexer interface { type yyLexer interface {

View File

@ -56,9 +56,6 @@ func (l *Parser) Error(msg string) {
// Parse the php7 Parser entrypoint // Parse the php7 Parser entrypoint
func (l *Parser) Parse() int { func (l *Parser) Parse() int {
yyDebug = 0
yyErrorVerbose = true
// init // init
l.errors = nil l.errors = nil
l.rootNode = nil l.rootNode = nil

View File

@ -1758,7 +1758,7 @@ var yyErrorMessages = [...]struct {
var ( var (
yyDebug = 0 yyDebug = 0
yyErrorVerbose = false yyErrorVerbose = true
) )
type yyLexer interface { type yyLexer interface {