@@ -282,19 +282,21 @@ bool image_handler::floppy_save(const floppy_format_info &format) const
282282 return !format.m_format ->save (*io, variants, m_floppy_image);
283283}
284284
285- void image_handler::floppy_create (const floppy_create_info &format, fs::meta_data meta)
285+ bool image_handler::floppy_create (const floppy_create_info &format, fs::meta_data meta)
286286{
287287 if (format.m_type ) {
288288 std::vector<uint32_t > variants;
289289 std::vector<u8 > img (format.m_image_size );
290290 fs::fsblk_vec_t blockdev (img);
291291 auto fs = format.m_manager ->mount (blockdev);
292- fs->format (meta);
292+ if (!fs || fs->format (meta))
293+ return false ;
293294
294295 auto io = util::ram_read (img.data (), img.size (), 0xff );
295- format.m_type ->load (*io, floppy_image::FF_UNKNOWN, variants, m_floppy_image);
296+ return ! format.m_type ->load (*io, floppy_image::FF_UNKNOWN, variants, m_floppy_image);
296297 } else {
297298 fs::unformatted_image::format (format.m_key , &m_floppy_image);
299+ return true ;
298300 }
299301}
300302
@@ -327,6 +329,11 @@ bool image_handler::floppy_mount_fs(const filesystem_format &format)
327329 m_fsblk.reset (new fs::fsblk_vec_t (m_sector_image));
328330 m_fsm = format.m_manager ;
329331 m_fs = m_fsm->mount (*m_fsblk);
332+ if (!m_fs) {
333+ m_fsblk.reset ();
334+ m_sector_image.clear ();
335+ return true ;
336+ }
330337 return false ;
331338}
332339
@@ -338,6 +345,11 @@ bool image_handler::hd_mount_fs(const filesystem_format &format)
338345 m_fsblk.reset (new fs::fsblk_vec_t (m_sector_image));
339346 m_fsm = format.m_manager ;
340347 m_fs = m_fsm->mount (*m_fsblk);
348+ if (!m_fs) {
349+ m_fsblk.reset ();
350+ m_sector_image.clear ();
351+ return true ;
352+ }
341353 return false ;
342354}
343355
0 commit comments