From e266271612c2a0eca65c0e8cc867694b5de4dbb1 Mon Sep 17 00:00:00 2001 From: Mark Pizzolato Date: Mon, 7 May 2018 12:22:33 -0700 Subject: [PATCH] DISK: Fix auto format detection when attaching VHD disk images --- sim_disk.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/sim_disk.c b/sim_disk.c index 99cb9b99..ad88d26e 100644 --- a/sim_disk.c +++ b/sim_disk.c @@ -1528,6 +1528,8 @@ switch (DK_GET_FMT (uptr)) { /* case on format */ sim_disk_set_fmt (uptr, 0, "VHD", NULL); /* set file format to VHD */ sim_vhd_disk_close (uptr->fileref); /* close vhd file*/ uptr->fileref = NULL; + open_function = sim_vhd_disk_open; + size_function = sim_vhd_disk_size; break; } if (NULL != (uptr->fileref = sim_os_disk_open_raw (cptr, "rb"))) { @@ -1562,8 +1564,11 @@ switch (DK_GET_FMT (uptr)) { /* case on format */ } uptr->filename = (char *) calloc (CBUFSIZE, sizeof (char));/* alloc name buf */ uptr->disk_ctx = ctx = (struct disk_context *)calloc(1, sizeof(struct disk_context)); -if ((uptr->filename == NULL) || (uptr->disk_ctx == NULL)) +if ((uptr->filename == NULL) || (uptr->disk_ctx == NULL)) { + free (uptr->filename); + free (uptr->disk_ctx); return _err_return (uptr, SCPE_MEM); + } strncpy (uptr->filename, cptr, CBUFSIZE); /* save name */ ctx->sector_size = (uint32)sector_size; /* save sector_size */ ctx->capac_factor = ((dptr->dwidth / dptr->aincr) == 16) ? 2 : 1; /* save capacity units (word: 2, byte: 1) */