Browse Source

Add `ok` check to takeChar()

Alois Mahdal 2 days ago
parent
commit
818c29b3a4
1 changed files with 6 additions and 3 deletions
  1. 6
    3
      app/tokenize/tokenize.go

+ 6
- 3
app/tokenize/tokenize.go View File

@@ -26,10 +26,13 @@ func (self *reader) peekChar() (byte, bool) {
26 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 30
 	self.checkPos()
31
+	if self.pos == self.len() {
32
+		return "", false
33
+	}
31 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 38
 func (self *reader) takeUntil(needle string) (string, bool) {
@@ -185,7 +188,7 @@ func tokenize(str string) tokenizeResult {
185 188
 			if rdr.done() {
186 189
 				return tokenizeResult{code: tokenizeResultCodeMissingEscapedCharacter, err_loc: rdr.pos - 1}
187 190
 			}
188
-			new_chars := rdr.takeChar()
191
+			new_chars, _ := rdr.takeChar()
189 192
 			b.bufAppend(new_chars)
190 193
 		default:
191 194
 			b.bufAppendChar(this_char)