aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJavier <dev.git@javispedro.com>2022-04-13 02:47:39 +0200
committerJavier <dev.git@javispedro.com>2022-04-13 02:47:39 +0200
commita77ce98811ba6040dafec8f75b5387ae5b2813aa (patch)
tree035b7046d3543cc14c6be2dc67ba136ac09ea572
parent8424f752f8f679cd5f5f9a2715d54a41f8885b0a (diff)
downloadvbados-a77ce98811ba6040dafec8f75b5387ae5b2813aa.tar.gz
vbados-a77ce98811ba6040dafec8f75b5387ae5b2813aa.zip
fix sft leak
-rw-r--r--int21dos.h7
-rw-r--r--makefile18
-rw-r--r--sftsr.c2
3 files changed, 18 insertions, 9 deletions
diff --git a/int21dos.h b/int21dos.h
index 30aa68b..0a04ac0 100644
--- a/int21dos.h
+++ b/int21dos.h
@@ -298,6 +298,13 @@ static inline DOSLOL __far * dos_get_list_of_lists(void);
__value [es bx] \
__modify [ax]
+static inline uint16_t dos_sft_decref(DOSSFT __far *sft);
+#pragma aux dos_sft_decref = \
+ "mov ax, 0x1208" \
+ "int 0x2F" \
+ __parm [es di] \
+ __value [ax]
+
// Network redirector interface
enum DOS_REDIR_SUBFUNCTION {
diff --git a/makefile b/makefile
index 4c419c9..4f75ac4 100644
--- a/makefile
+++ b/makefile
@@ -29,33 +29,33 @@ all: vbmouse.exe vbmouse.drv vbsf.exe .SYMBOLIC
# DOS mouse driver
vbmouse.exe: vbmouse.lnk $(mousedosobjs)
- wlink @$[@ name $@ file { $(mousedosobjs) }
+ *wlink @$[@ name $@ file { $(mousedosobjs) }
mousetsr.obj: mousetsr.c .AUTODEPEND
- wcc -fo=$^@ $(doscflags) $(dostsrcflags) $[@
+ *wcc -fo=$^@ $(doscflags) $(dostsrcflags) $[@
mousmain.obj: mousmain.c .AUTODEPEND
- wcc -fo=$^@ $(doscflags) $[@
+ *wcc -fo=$^@ $(doscflags) $[@
vbox.obj: vbox.c .AUTODEPEND
- wcc -fo=$^@ $(doscflags) $[@
+ *wcc -fo=$^@ $(doscflags) $[@
# Windows 3.x mouse driver
vbmouse.drv: mousew16.lnk $(mousew16objs)
- wlink @$[@ name $@ file { $(mousew16objs) }
+ *wlink @$[@ name $@ file { $(mousew16objs) }
mousew16.obj: mousew16.c .AUTODEPEND
- wcc -fo=$^@ $(w16cflags) $[@
+ *wcc -fo=$^@ $(w16cflags) $[@
# DOS shared folders
vbsf.exe: vbsf.lnk $(sfdosobjs)
- wlink @$[@ name $@ file { $(sfdosobjs) }
+ *wlink @$[@ name $@ file { $(sfdosobjs) }
sfmain.obj: sfmain.c .AUTODEPEND
- wcc -fo=$^@ $(doscflags) $[@
+ *wcc -fo=$^@ $(doscflags) $[@
sftsr.obj: sftsr.c .AUTODEPEND
- wcc -fo=$^@ $(doscflags) $(dostsrcflags) $[@
+ *wcc -fo=$^@ $(doscflags) $(dostsrcflags) $[@
clean: .SYMBOLIC
rm -f vbmouse.exe vbmouse.drv vbsf.exe vbmouse.flp *.obj *.map
diff --git a/sftsr.c b/sftsr.c
index 245872a..6c4c99e 100644
--- a/sftsr.c
+++ b/sftsr.c
@@ -464,6 +464,8 @@ static void handle_close(union INTPACK __far *r)
return;
}
+ dos_sft_decref(sft);
+
data.files[openfile].root = SHFL_ROOT_NIL;
data.files[openfile].handle = SHFL_HANDLE_NIL;