From: Toni Wilen Date: Sun, 16 Nov 2025 11:40:15 +0000 (+0200) Subject: Fix missing freesem if info data is not available X-Git-Tag: 6020~64 X-Git-Url: https://git.unchartedbackwaters.co.uk/w/?a=commitdiff_plain;h=ac642118c8300d45dad1e88d429de4596453f90a;p=francis%2Fwinuae.git Fix missing freesem if info data is not available --- 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; }