Skip to content

Commit 0f22b1e

Browse files
committed
Fix string-ref bug.
1 parent 23ed1c7 commit 0f22b1e

2 files changed

Lines changed: 4 additions & 0 deletions

File tree

langs/hoax/compile-ops.rkt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -240,6 +240,8 @@
240240
(seq (Pop r8)
241241
(assert-string r8)
242242
(assert-integer rax)
243+
(Cmp r8 type-str)
244+
(Je 'raise_error_align) ; special case for empty string
243245
(Cmp rax 0)
244246
(Jl 'raise_error_align)
245247
(Xor r8 type-str) ; r8 = ptr

langs/hoax/test/test-runner.rkt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,8 @@
145145
(check-equal? (run '(make-string 3 #\g)) "ggg")
146146
(check-equal? (run '(string-length "")) 0)
147147
(check-equal? (run '(string-length "fred")) 4)
148+
(check-equal? (run '(string-ref "" 0)) 'err)
149+
(check-equal? (run '(string-ref (make-string 0 #\a) 0)) 'err)
148150
(check-equal? (run '(string-ref "fred" 0)) #\f)
149151
(check-equal? (run '(string-ref "fred" 1)) #\r)
150152
(check-equal? (run '(string-ref "fred" 2)) #\e)

0 commit comments

Comments
 (0)