[haiku-commits] haiku: hrev46427 - src/kits/media

  • From: korli@xxxxxxxxxxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Sun, 24 Nov 2013 12:43:51 +0100 (CET)

hrev46427 adds 1 changeset to branch 'master'
old head: aeaf4921576d3a52a46cb3f3a90d1563311cacd4
new head: cb00db5bf0a84708e3f531c1f9265df15d03e24a
overview: http://cgit.haiku-os.org/haiku/log/?qt=range&q=cb00db5+%5Eaeaf492

----------------------------------------------------------------------------

cb00db5: libmedia: fixed minor leak in BDiscreteParameter::AddItem.
  
  * CID 992460

                                   [ Jérôme Duval <jerome.duval@xxxxxxxxx> ]

----------------------------------------------------------------------------

Revision:    hrev46427
Commit:      cb00db5bf0a84708e3f531c1f9265df15d03e24a
URL:         http://cgit.haiku-os.org/haiku/commit/?id=cb00db5
Author:      Jérôme Duval <jerome.duval@xxxxxxxxx>
Date:        Sun Nov 24 11:41:28 2013 UTC

----------------------------------------------------------------------------

1 file changed, 14 insertions(+), 4 deletions(-)
src/kits/media/ParameterWeb.cpp | 18 ++++++++++++++----

----------------------------------------------------------------------------

diff --git a/src/kits/media/ParameterWeb.cpp b/src/kits/media/ParameterWeb.cpp
index 76adc08..cdf6f4d 100644
--- a/src/kits/media/ParameterWeb.cpp
+++ b/src/kits/media/ParameterWeb.cpp
@@ -2016,17 +2016,27 @@ BDiscreteParameter::AddItem(int32 value, const char* 
name)
 {
        CALLED();
 
-       int32* valueCopy = new int32(value);
+       int32* valueCopy = new(std::nothrow) int32(value);
+       if (valueCopy == NULL)
+               return B_NO_MEMORY;
        char* nameCopy = strndup(name, 255);
        if (name != NULL && nameCopy == NULL) {
                delete valueCopy;
                return B_NO_MEMORY;
        }
 
-       if (!fValues->AddItem(valueCopy) || !fSelections->AddItem(nameCopy))
-               return B_NO_MEMORY;
-
+       if (!fValues->AddItem(valueCopy))
+               goto err;
+       if (!fSelections->AddItem(nameCopy)) {
+               fValues->RemoveItem(valueCopy);
+               goto err;
+       }
        return B_OK;
+
+err:
+       free(nameCopy);
+       delete valueCopy;
+       return B_NO_MEMORY;
 }
 
 


Other related posts:

  • » [haiku-commits] haiku: hrev46427 - src/kits/media - korli