浏览代码

Add `ok` check to takeChar()

Alois Mahdal 2 天前
父节点
当前提交
818c29b3a4
共有 1 个文件被更改,包括 6 次插入3 次删除
  1. 6
    3
      app/tokenize/tokenize.go

+ 6
- 3
app/tokenize/tokenize.go 查看文件

26
 	return self.data[self.pos], true
26
 	return self.data[self.pos], true
27
 }
27
 }
28
 
28
 
29
-func (self *reader) takeChar() string {
29
+func (self *reader) takeChar() (string, bool) {
30
 	self.checkPos()
30
 	self.checkPos()
31
+	if self.pos == self.len() {
32
+		return "", false
33
+	}
31
 	self.pos += 1
34
 	self.pos += 1
32
-	return self.data[self.pos-1 : self.pos]
35
+	return self.data[self.pos-1 : self.pos], true
33
 }
36
 }
34
 
37
 
35
 func (self *reader) takeUntil(needle string) (string, bool) {
38
 func (self *reader) takeUntil(needle string) (string, bool) {
185
 			if rdr.done() {
188
 			if rdr.done() {
186
 				return tokenizeResult{code: tokenizeResultCodeMissingEscapedCharacter, err_loc: rdr.pos - 1}
189
 				return tokenizeResult{code: tokenizeResultCodeMissingEscapedCharacter, err_loc: rdr.pos - 1}
187
 			}
190
 			}
188
-			new_chars := rdr.takeChar()
191
+			new_chars, _ := rdr.takeChar()
189
 			b.bufAppend(new_chars)
192
 			b.bufAppend(new_chars)
190
 		default:
193
 		default:
191
 			b.bufAppendChar(this_char)
194
 			b.bufAppendChar(this_char)