aboutsummaryrefslogtreecommitdiff
path: root/vendor/github.com/hashicorp/hcl/hcl/scanner/scanner.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/hashicorp/hcl/hcl/scanner/scanner.go')
-rw-r--r--vendor/github.com/hashicorp/hcl/hcl/scanner/scanner.go17
1 files changed, 14 insertions, 3 deletions
diff --git a/vendor/github.com/hashicorp/hcl/hcl/scanner/scanner.go b/vendor/github.com/hashicorp/hcl/hcl/scanner/scanner.go
index a3f34a7..b204165 100644
--- a/vendor/github.com/hashicorp/hcl/hcl/scanner/scanner.go
+++ b/vendor/github.com/hashicorp/hcl/hcl/scanner/scanner.go
@@ -469,7 +469,7 @@ func (s *Scanner) scanString() {
// read character after quote
ch := s.next()
- if ch == '\n' || ch < 0 || ch == eof {
+ if ch < 0 || ch == eof {
s.err("literal not terminated")
return
}
@@ -525,16 +525,27 @@ func (s *Scanner) scanEscape() rune {
// scanDigits scans a rune with the given base for n times. For example an
// octal notation \184 would yield in scanDigits(ch, 8, 3)
func (s *Scanner) scanDigits(ch rune, base, n int) rune {
+ start := n
for n > 0 && digitVal(ch) < base {
ch = s.next()
+ if ch == eof {
+ // If we see an EOF, we halt any more scanning of digits
+ // immediately.
+ break
+ }
+
n--
}
if n > 0 {
s.err("illegal char escape")
}
- // we scanned all digits, put the last non digit char back
- s.unread()
+ if n != start {
+ // we scanned all digits, put the last non digit char back,
+ // only if we read anything at all
+ s.unread()
+ }
+
return ch
}