diff --git a/collects/compiler/zo-marshal.ss b/collects/compiler/zo-marshal.ss index 4102326db6..4bcdf84009 100644 --- a/collects/compiler/zo-marshal.ss +++ b/collects/compiler/zo-marshal.ss @@ -663,8 +663,9 @@ [(svector? expr) (out-byte CPT_SVECTOR out) (out-number (vector-length (svector-vec expr)) out) - (for ([n (in-vector (svector-vec expr))]) - (out-number n out))] + (let ([vec (svector-vec expr)]) + (for ([n (in-range (sub1 (vector-length vec)) -1 -1)]) + (out-number (vector-ref vec n) out)))] [else (out-byte CPT_QUOTE out) (let ([s (open-output-bytes)]) diff --git a/collects/tests/mzscheme/zo-marshal.ss b/collects/tests/mzscheme/zo-marshal.ss index 610871f858..a116313d58 100644 --- a/collects/tests/mzscheme/zo-marshal.ss +++ b/collects/tests/mzscheme/zo-marshal.ss @@ -20,6 +20,7 @@ (open-input-bytes (get-output-bytes s))))))) (define values-id (get-id #'values)) +(define list-id (get-id #'list)) (define object-name-id (get-id #'object-name)) ;; ---------------------------------------- @@ -155,6 +156,28 @@ ;; ---------------------------------------- +(check (make-simple + (make-let-one + 'v1 + (make-let-one + 'v0 + (make-let-one + (make-lam 'proc + null + 1 + '(val) + #f + #(1 2) + 20 + (make-application + (make-primval list-id) + (list + (make-localref #f 2 #f #f) + (make-localref #f 3 #f #f)))) + (make-application + (make-localref #f 1 #f #f) + (list 5)))))) + '(v0 v1)) ;; ----------------------------------------