mirror of https://github.com/v2ray/v2ray-core
				
				
				
			bug fix
							parent
							
								
									b469dea315
								
							
						
					
					
						commit
						49202930ff
					
				| 
						 | 
				
			
			@ -7,14 +7,16 @@ import (
 | 
			
		|||
type State byte
 | 
			
		||||
 | 
			
		||||
const (
 | 
			
		||||
	StateContent              State = 0
 | 
			
		||||
	StateEscape               State = 1
 | 
			
		||||
	StateDoubleQuote          State = 2
 | 
			
		||||
	StateSingleQuote          State = 3
 | 
			
		||||
	StateComment              State = 4
 | 
			
		||||
	StateSlash                State = 5
 | 
			
		||||
	StateMultilineComment     State = 6
 | 
			
		||||
	StateMultilineCommentStar State = 7
 | 
			
		||||
	StateContent State = iota
 | 
			
		||||
	StateEscape
 | 
			
		||||
	StateDoubleQuote
 | 
			
		||||
	StateDoubleQuoteEscape
 | 
			
		||||
	StateSingleQuote
 | 
			
		||||
	StateSingleQuoteEscape
 | 
			
		||||
	StateComment
 | 
			
		||||
	StateSlash
 | 
			
		||||
	StateMultilineComment
 | 
			
		||||
	StateMultilineCommentStar
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
type Reader struct {
 | 
			
		||||
| 
						 | 
				
			
			@ -51,15 +53,31 @@ func (v *Reader) Read(b []byte) (int, error) {
 | 
			
		|||
			p = append(p, x)
 | 
			
		||||
			v.state = StateContent
 | 
			
		||||
		case StateDoubleQuote:
 | 
			
		||||
			if x == '"' {
 | 
			
		||||
			switch x {
 | 
			
		||||
			case '"':
 | 
			
		||||
				v.state = StateContent
 | 
			
		||||
				p = append(p, x)
 | 
			
		||||
			case '\\':
 | 
			
		||||
				v.state = StateDoubleQuoteEscape
 | 
			
		||||
			default:
 | 
			
		||||
				p = append(p, x)
 | 
			
		||||
			}
 | 
			
		||||
			p = append(p, x)
 | 
			
		||||
		case StateDoubleQuoteEscape:
 | 
			
		||||
			p = append(p, '\\', x)
 | 
			
		||||
			v.state = StateDoubleQuote
 | 
			
		||||
		case StateSingleQuote:
 | 
			
		||||
			if x == '\'' {
 | 
			
		||||
			switch x {
 | 
			
		||||
			case '\'':
 | 
			
		||||
				v.state = StateContent
 | 
			
		||||
				p = append(p, x)
 | 
			
		||||
			case '\\':
 | 
			
		||||
				v.state = StateSingleQuoteEscape
 | 
			
		||||
			default:
 | 
			
		||||
				p = append(p, x)
 | 
			
		||||
			}
 | 
			
		||||
			p = append(p, x)
 | 
			
		||||
		case StateSingleQuoteEscape:
 | 
			
		||||
			p = append(p, '\\', x)
 | 
			
		||||
			v.state = StateSingleQuote
 | 
			
		||||
		case StateComment:
 | 
			
		||||
			if x == '\n' {
 | 
			
		||||
				v.state = StateContent
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -32,6 +32,7 @@ text 2*/`, `
 | 
			
		|||
text text 2*`},
 | 
			
		||||
		{`"//"content`, `"//"content`},
 | 
			
		||||
		{`abcd'//'abcd`, `abcd'//'abcd`},
 | 
			
		||||
		{`"\""`, `"\""`},
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	for _, testCase := range data {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue