]> git.sur5r.net Git - cc65/commitdiff
close IOCB if open failed -- otherwise is is still marked as "in use" 19/head
authorChristian Groessler <chris@groessler.org>
Tue, 9 Jul 2013 21:39:42 +0000 (23:39 +0200)
committerChristian Groessler <chris@groessler.org>
Tue, 9 Jul 2013 21:59:27 +0000 (23:59 +0200)
libsrc/atari/graphics.s
libsrc/atari/open.s
libsrc/atari/posixdirent.s

index 60f2ff7898196beb53b3260b00aed3bbabc9b743..1c68562960f03e892cc190619db03e3d7934c5c2 100644 (file)
@@ -10,7 +10,7 @@
         .export __graphics
 
         .import findfreeiocb
-        .import __do_oserror,__oserror
+        .import __oserror
         .import fddecusage
         .import clriocb
         .import fdtoiocb
@@ -96,8 +96,13 @@ doopen: txa
         stx     __oserror
         rts
 
-cioerr: jsr     fddecusage      ; decrement usage counter of fd as open failed
-        jmp     __do_oserror
+cioerr: sty     tmp3            ; remember error code
+        lda     #CLOSE
+        sta     ICCOM,x
+        jsr     CIOV            ; close IOCB again since open failed
+        jsr     fddecusage      ; and decrement usage counter of fd
+        lda     tmp3            ; put error code into A
+        jmp     __mappederrno
 
 .endproc        ; __graphics
 
index 8aeff9ed4d24ba4fabe3def1ddc9d151c9686225..306cf52c21feb66adf18f7a2b7bbba0f641305a0 100644 (file)
@@ -140,8 +140,12 @@ finish: php
         plp
 
         bpl     ok
-        jsr     fddecusage      ; decrement usage counter of fd as open failed
-        tya                     ; put error code into A
+        sty     tmp3            ; remember error code
+        lda     #CLOSE
+        sta     ICCOM,x
+        jsr     CIOV            ; close IOCB again since open failed
+        jsr     fddecusage      ; and decrement usage counter of fd
+        lda     tmp3            ; put error code into A
         jmp     __mappederrno
 
 ok:     lda     tmp2            ; get fd
index 3417e4bfc8229f3cba4f5ef8a984c7f6f85d1ad6..a722b3b06f74a58bdd3732cc5cca714c1d7d64ba 100644 (file)
@@ -63,6 +63,9 @@
 .endproc
 
 cioerr:         sty     __oserror
+                lda     #CLOSE
+                sta     ICCOM,x
+                jsr     CIOV            ; close IOCB again since open failed
                 jmp     return0
 
 .proc   _readdir