close IOCB if open failed -- otherwise is is still marked as "in use"

This commit is contained in:
Christian Groessler 2013-07-09 23:39:42 +02:00
parent feedf6690c
commit f04dc3570c
3 changed files with 18 additions and 6 deletions

View File

@ -10,12 +10,12 @@
.export __graphics
.import findfreeiocb
.import __do_oserror,__oserror
.import __oserror
.import fddecusage
.import clriocb
.import fdtoiocb
.import newfd
.import scrdev
.import scrdev
.importzp tmp1,tmp2,tmp3
.include "atari.inc"
@ -97,7 +97,12 @@ 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

View 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

View 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