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; }