On 03/08/2020 15:16, Christian Mauderer wrote:

diff --git a/cpukit/libfs/src/dosfs/msdos_init.c 
b/cpukit/libfs/src/dosfs/msdos_init.c
index dc9c76437d..0649258fa7 100644
--- a/cpukit/libfs/src/dosfs/msdos_init.c
+++ b/cpukit/libfs/src/dosfs/msdos_init.c
@@ -102,10 +102,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;
      }
@@ -116,6 +118,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;
Why can't we destroy the converter in both cases?
_______________________________________________
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

Reply via email to