summaryrefslogtreecommitdiffstats
path: root/cpukit/libfs/src/dosfs/msdos_init.c
diff options
context:
space:
mode:
Diffstat (limited to 'cpukit/libfs/src/dosfs/msdos_init.c')
-rw-r--r--cpukit/libfs/src/dosfs/msdos_init.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/cpukit/libfs/src/dosfs/msdos_init.c b/cpukit/libfs/src/dosfs/msdos_init.c
index 3ea6f104e8..2874172484 100644
--- a/cpukit/libfs/src/dosfs/msdos_init.c
+++ b/cpukit/libfs/src/dosfs/msdos_init.c
@@ -103,10 +103,12 @@ int rtems_dosfs_initialize(
int rc = 0;
const rtems_dosfs_mount_options *mount_options = data;
rtems_dosfs_convert_control *converter;
+ bool converter_created = false;
if (mount_options == NULL || mount_options->converter == NULL) {
converter = rtems_dosfs_create_default_converter();
+ converter_created = true;
} else {
converter = mount_options->converter;
}
@@ -117,6 +119,9 @@ int rtems_dosfs_initialize(
&msdos_file_handlers,
&msdos_dir_handlers,
converter);
+ if (rc != 0 && converter_created) {
+ (*converter->handler->destroy)(converter);
+ }
} else {
errno = ENOMEM;
rc = -1;