[plt-scheme] Wierd bug - is it me or PLT's fault?

From: ifconfig (nslookupifconfig at hotmail.com)
Date: Mon Mar 29 03:50:08 EST 2004

I have a piece of code that opens an output file:
It tries to open it. If it fails, it asks whether to overwrite or not, then
tries again.
If it succeeds (in the first or second attempt) it sets current-output-port.

I've run it in its own module, and it works perfectly.
But when I run it inside the module that it's supposed to go into, both
branches of an if statement get executed!

(module testof mzscheme
  (require (lib "mred.ss" "mred"))
  (define of "test.txt")

;;; here starts the piece of code
      ([exn:i/o? (lambda (e)
                   (message-box "Brainfuck"
                                (format "Error: Could not open output file
~a; using standard output\n" of)
                                `(ok caution)))])
         ([exn:i/o? (lambda (e)
                      (if (equal? (message-box "Brainfuck"
                                                     (format "File ~a
exists, overwrite?" of)
                          (begin (display "yes\n") (open-output-file of
                          (begin (display "no\n") (raise e))))])
       (open-output-file of))))

;;; and here it ends
  (display "Hello.\r\n")
  (close-output-port (current-output-port)))

Now, notice the (display "yes\n") and (display "no\n") - in this example
only one is printed - depending on what you select in the message-box. But
when I run it in my piece of code, whether I choose yes or no it prints
"yes", opens the file, then prints "no" and uses standard output - what
could cause this?


Posted on the users mailing list.