From a77ce98811ba6040dafec8f75b5387ae5b2813aa Mon Sep 17 00:00:00 2001 From: Javier Date: Wed, 13 Apr 2022 02:47:39 +0200 Subject: fix sft leak --- int21dos.h | 7 +++++++ makefile | 18 +++++++++--------- sftsr.c | 2 ++ 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; -- cgit v1.2.3