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 21ef04845e
commit 1bfd39ee20
3 changed files with 17 additions and 5 deletions

View File

@@ -10,7 +10,7 @@
.export __graphics .export __graphics
.import findfreeiocb .import findfreeiocb
.import __do_oserror,__oserror .import __oserror
.import fddecusage .import fddecusage
.import clriocb .import clriocb
.import fdtoiocb .import fdtoiocb
@@ -96,8 +96,13 @@ doopen: txa
stx __oserror stx __oserror
rts rts
cioerr: jsr fddecusage ; decrement usage counter of fd as open failed cioerr: sty tmp3 ; remember error code
jmp __do_oserror 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 .endproc ; __graphics

View File

@@ -140,8 +140,12 @@ finish: php
plp plp
bpl ok bpl ok
jsr fddecusage ; decrement usage counter of fd as open failed sty tmp3 ; remember error code
tya ; put error code into A 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 jmp __mappederrno
ok: lda tmp2 ; get fd ok: lda tmp2 ; get fd

View File

@@ -63,6 +63,9 @@
.endproc .endproc
cioerr: sty __oserror cioerr: sty __oserror
lda #CLOSE
sta ICCOM,x
jsr CIOV ; close IOCB again since open failed
jmp return0 jmp return0
.proc _readdir .proc _readdir