Cached procedure causes an error

Issue #149 resolved
Takashi Kato repo owner created an issue

Running test of this library https://github.com/ktakashi/aeolus causes an error on second time.

%%%% Starting test DES
FAIL cipher?
Unhandled exception
  Condition components:
  1. &assertion
  2. &who apply
  3. &message invalid application
  4. &irritants (#<code-builder ecb-start (3 0 0)> #(8 8 8 16 #<closure des-setup 2:0> #<closure des-encrypt 5:0> #<closure des-decrypt 5:0> #<closure des-done 1:0>) #vu8(0 0 0 0 0 0 0 0) #f)
  5. &stack-trace

stack trace:
  [1] make-cipher
  [2] make-cipher
    src: (setup spec key param)
    "/home/takashi/projects/aeolus/lib/aeolus/cipher.sld":52
  [3] des-ecb-test
    src: (cipher-maker key)
    "tests/test-des.scm":135
  [4] #f
    src: (proc (car l))
  [5] load

Seems caching and lining cause this problem.

Comments (2)

  1. Takashi Kato reporter

    small piece of code:

    ;; test-lib.scm
    (define-library (test-lib)
      (export *mode*)
      (import (scheme base))
      (begin
        (define (test-proc) 'ok)
        (define (test-proc2) 'ok)
        (define *mode* (vector test-proc test-proc2)))
      )
    
    ;; test-lib2.scm
    (define-library (test-lib2)
      (export run)
      (import (scheme base) (scheme write) (test-lib))
      (begin
        (define (run)
          (display *mode*) (newline)
          (list ((vector-ref *mode* 0))
                ((vector-ref *mode* 1)))))
      )
    
    ;; run.scm
    (import (test-lib2))
    (run)
    ;; -> error on second time
    
  2. Log in to comment