From 328814cf227dd1e0731e58c90e30af87a19c44a1 Mon Sep 17 00:00:00 2001 From: Sjoerd van der Berg Date: Mon, 21 Oct 2002 21:58:45 +0000 Subject: [PATCH] Fixed unlocking handles, to report error when not locked. Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@389 --- src/ints/xms.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/ints/xms.cpp b/src/ints/xms.cpp index d89b3121..d369d350 100644 --- a/src/ints/xms.cpp +++ b/src/ints/xms.cpp @@ -54,6 +54,8 @@ #define XMS_OUT_OF_SPACE 0xa0 #define XMS_OUT_OF_HANDLES 0xa1 #define XMS_INVALID_HANDLE 0xa2 +#define XMS_BLOCK_NOT_LOCKED 0xaa +#define XMS_BLOCK_LOCKED 0xab struct XMS_Block { Bit16u prev,next; @@ -292,8 +294,13 @@ foundnew: reg_bl=XMS_INVALID_HANDLE; return CBRET_NONE; } - if (xms_handles[reg_dx].locked) xms_handles[reg_dx].locked--; - reg_ax=1;reg_bl=0; + if (xms_handles[reg_dx].locked) { + xms_handles[reg_dx].locked--; + reg_ax=1;reg_bl=0; + } else { + reg_ax=0; + reg_bl=XMS_BLOCK_NOT_LOCKED; + } break; case XMS_GET_EMB_HANDLE_INFORMATION: /* 0e */ /* Check for a valid handle */