diff --git a/src/Main/Forms/WaitDialog.cpp b/src/Main/Forms/WaitDialog.cpp index 9d233e1f..579df614 100644 --- a/src/Main/Forms/WaitDialog.cpp +++ b/src/Main/Forms/WaitDialog.cpp @@ -64,10 +64,11 @@ namespace VeraCrypt VC_CONVERT_EXCEPTION (UnsupportedSectorSizeNoKernelCrypto); VC_CONVERT_EXCEPTION (VolumeAlreadyMounted); VC_CONVERT_EXCEPTION (VolumeSlotUnavailable); - VC_CONVERT_EXCEPTION (UserInterfaceException); + // Handle UserInterfaceException subclasses before the base class to avoid slicing. VC_CONVERT_EXCEPTION (MissingArgument); VC_CONVERT_EXCEPTION (NoItemSelected); VC_CONVERT_EXCEPTION (StringFormatterException); + VC_CONVERT_EXCEPTION (UserInterfaceException); VC_CONVERT_EXCEPTION (FilesystemDismountFailed); VC_CONVERT_EXCEPTION (ExecutedProcessFailed); VC_CONVERT_EXCEPTION (AlreadyInitialized); diff --git a/src/Main/UserInterface.cpp b/src/Main/UserInterface.cpp index 2a5fd71a..feb40978 100644 --- a/src/Main/UserInterface.cpp +++ b/src/Main/UserInterface.cpp @@ -1903,10 +1903,11 @@ const FileManager fileManagers[] = { VC_CONVERT_EXCEPTION (UnsupportedSectorSizeNoKernelCrypto); VC_CONVERT_EXCEPTION (VolumeAlreadyMounted); VC_CONVERT_EXCEPTION (VolumeSlotUnavailable); - VC_CONVERT_EXCEPTION (UserInterfaceException); + // Handle UserInterfaceException subclasses before the base class to avoid slicing. VC_CONVERT_EXCEPTION (MissingArgument); VC_CONVERT_EXCEPTION (NoItemSelected); VC_CONVERT_EXCEPTION (StringFormatterException); + VC_CONVERT_EXCEPTION (UserInterfaceException); VC_CONVERT_EXCEPTION (FilesystemDismountFailed); VC_CONVERT_EXCEPTION (ExecutedProcessFailed); VC_CONVERT_EXCEPTION (AlreadyInitialized);