From ac642118c8300d45dad1e88d429de4596453f90a Mon Sep 17 00:00:00 2001 From: Toni Wilen Date: Sun, 16 Nov 2025 13:40:15 +0200 Subject: [PATCH] Fix missing freesem if info data is not available --- blkdev.cpp | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/blkdev.cpp b/blkdev.cpp index 8ba8677a..a9507143 100644 --- a/blkdev.cpp +++ b/blkdev.cpp @@ -1051,17 +1051,23 @@ int sys_command_ismedia (int unitnum, int quick) struct device_info *sys_command_info_session (int unitnum, struct device_info *di, int quick, int session) { struct blkdevstate *st = &state[unitnum]; - if (failunit (unitnum)) + if (failunit (unitnum)) { return NULL; - if (!getsem (unitnum)) + } + if (!getsem (unitnum)) { return 0; - if (st->device_func->info == NULL) + } + if (st->device_func->info == NULL) { + freesem(unitnum); return 0; + } struct device_info *di2 = st->device_func->info (unitnum, di, quick, -1); - if (di2) + if (di2) { st->type = di2->type; - if (di2 && st->delayed) + } + if (di2 && st->delayed) { di2->media_inserted = 0; + } freesem (unitnum); return di2; } -- 2.47.3