Skip to content

Commit 9de03ce

Browse files
committed
waterhouse's bugfix v2: http://arclanguage.org/item?id=13622
1 parent cea8a4c commit 9de03ce

1 file changed

Lines changed: 8 additions & 12 deletions

File tree

ac.scm

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1266,27 +1266,23 @@
12661266
; http://arclanguage.org/item?id=13616
12671267
(require racket/unsafe/ops)
12681268

1269-
(define (set-ca/dr! offset who p x)
1270-
(if (pair? p)
1271-
(unsafe-vector-set! p offset x)
1272-
(raise-type-error who "pair" p)))
1273-
1274-
(define (n-set-car! p x)
1275-
(set-ca/dr! -1 'set-car! p x))
1276-
(define (n-set-cdr! p x)
1277-
(set-ca/dr! 0 'set-cdr! p x))
1278-
12791269
(define x-set-car!
12801270
(let ((fn (namespace-variable-value 'set-car! #t (lambda () #f))))
12811271
(if (procedure? fn)
12821272
fn
1283-
n-set-car!)))
1273+
(lambda (p x)
1274+
(if (pair? p)
1275+
(unsafe-set-mcar! p x)
1276+
(raise-type-error 'set-car! "pair" p))))))
12841277

12851278
(define x-set-cdr!
12861279
(let ((fn (namespace-variable-value 'set-cdr! #t (lambda () #f))))
12871280
(if (procedure? fn)
12881281
fn
1289-
n-set-cdr!)))
1282+
(lambda (p x)
1283+
(if (pair? p)
1284+
(unsafe-set-mcdr! p x)
1285+
(raise-type-error 'set-cdr! "pair" p))))))
12901286

12911287
; When and if cdr of a string returned an actual (eq) tail, could
12921288
; say (if (string? x) (string-replace! x val 1) ...) in scdr, but

0 commit comments

Comments
 (0)