[haiku-commits] Re: haiku: hrev44620 - in src: preferences/virtualmemory system/kernel/vm

  • From: Clemens <clemens.zeidler@xxxxxxxxx>
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Wed, 12 Sep 2012 09:00:37 +1200

On Wed, 12 Sep 2012 08:48:16 +1200, kallisti5 <kallisti5@xxxxxxxxxxx> wrote:


On 2012-09-07 2:36 am, Axel Dörfler wrote:
Am 07.09.2012 02:46, schrieb kallisti5@xxxxxxxxxxx:
-void
-Settings::_ReadSwapSettings()
+status_t
+Settings::ReadSwapSettings()
  {
        void* settings = load_driver_settings(kVirtualMemorySettings);
.
.
+       if (settings == NULL)
+               return kErrorSettingsNotFound;
+
.
+ if (enabled == NULL || size == NULL || device == NULL || volume == NULL
+               || capacity == NULL || filesystem == NULL)
+               return kErrorSettingsInvalid;

You leak the settings here. Better use an automatic object deleter.

Just to confirm I have the usage right.. (i've never used the AutoDeleter stuff before)

diff --git a/src/preferences/virtualmemory/Settings.cpp b/src/preferences/virtualmemory/Settings.cpp
index 08f6102..5360c99 100644
--- a/src/preferences/virtualmemory/Settings.cpp
+++ b/src/preferences/virtualmemory/Settings.cpp
@@ -17,6 +17,7 @@
  #include <stdlib.h>
  #include <string.h>

+#include <AutoDeleter.h>
  #include <File.h>
  #include <FindDirectory.h>
  #include <Path.h>
@@ -138,6 +139,7 @@ Settings::ReadSwapSettings()
         void* settings = load_driver_settings(kVirtualMemorySettings);
         if (settings == NULL)
                 return kErrorSettingsNotFound;
+       MemoryDeleter bufferDeleter(settings);


yes, if I get it right the settings handle is created using malloc so MemoryDeleter frees it when it leaves the scope.

One of my favourite patterns by the way, what is the name for it? yourpalal2 you told me once but I forgot...


Cheers,
        Clemens

Other related posts: