From 1124958ec03dcbe53545175a21ce5285c56eed26 Mon Sep 17 00:00:00 2001 From: Kevron Rees Date: Wed, 23 Jan 2013 10:42:46 -0800 Subject: [PATCH] fixed some memory leaks --- lib/abstractroutingengine.h | 1 + plugins/dbus/abstractdbusinterface.cpp | 2 +- plugins/dbus/custompropertyinterface.cpp | 2 ++ plugins/dbus/varianttype.cpp | 4 +++- plugins/obd2plugin/obd2source.cpp | 2 +- plugins/websocketsourceplugin/websocketsource.cpp | 3 ++- 6 files changed, 10 insertions(+), 4 deletions(-) diff --git a/lib/abstractroutingengine.h b/lib/abstractroutingengine.h index 645f7f1..f372bef 100644 --- a/lib/abstractroutingengine.h +++ b/lib/abstractroutingengine.h @@ -74,6 +74,7 @@ public: } + AbstractPropertyType* value; bool success; }; diff --git a/plugins/dbus/abstractdbusinterface.cpp b/plugins/dbus/abstractdbusinterface.cpp index 1272057..9d7fe77 100644 --- a/plugins/dbus/abstractdbusinterface.cpp +++ b/plugins/dbus/abstractdbusinterface.cpp @@ -131,7 +131,7 @@ void AbstractDBusInterface::updateValue(AbstractProperty *property) g_dbus_connection_emit_signal(mConnection, NULL, mObjectPath.c_str(), mInterfaceName.c_str(), string(property->name() + "Changed").c_str(), tuple_variant, &error); g_free(params); - //g_variant_unref(tuple_variant); + g_variant_unref(val); if(error) { diff --git a/plugins/dbus/custompropertyinterface.cpp b/plugins/dbus/custompropertyinterface.cpp index f89ce8f..a808b77 100644 --- a/plugins/dbus/custompropertyinterface.cpp +++ b/plugins/dbus/custompropertyinterface.cpp @@ -20,6 +20,8 @@ CustomPropertyInterface::CustomPropertyInterface(VehicleProperty::Property prop, std::string signature = g_variant_get_type_string(temp->toVariant()); propertyDBusMap[prop] = new VariantType(re, signature, prop, VariantType::ReadWrite, this); + + delete temp; } supportedChanged(re->supported()); diff --git a/plugins/dbus/varianttype.cpp b/plugins/dbus/varianttype.cpp index b9c0800..6cd4bba 100644 --- a/plugins/dbus/varianttype.cpp +++ b/plugins/dbus/varianttype.cpp @@ -25,7 +25,9 @@ GVariant *VariantType::toGVariant() AbstractPropertyType* v = VehicleProperty::getPropertyTypeForPropertyNameValue(mPropertyName); - return v->toVariant(); + setValue(v); + + delete v; } return value()->toVariant(); diff --git a/plugins/obd2plugin/obd2source.cpp b/plugins/obd2plugin/obd2source.cpp index 965c5b6..c2d8355 100644 --- a/plugins/obd2plugin/obd2source.cpp +++ b/plugins/obd2plugin/obd2source.cpp @@ -395,7 +395,7 @@ static int updateProperties( gpointer data) AbstractPropertyType* value = VehicleProperty::getPropertyTypeForPropertyNameValue(reply->property, reply->value); src->updateProperty(reply->property, value); - + delete value; delete reply; } diff --git a/plugins/websocketsourceplugin/websocketsource.cpp b/plugins/websocketsourceplugin/websocketsource.cpp index a1ed24d..c24940d 100644 --- a/plugins/websocketsourceplugin/websocketsource.cpp +++ b/plugins/websocketsourceplugin/websocketsource.cpp @@ -417,12 +417,13 @@ static int callback_http_only(libwebsocket_context *context,struct libwebsocket source->uuidReplyMap[id]->success = true; source->uuidReplyMap[id]->completed(source->uuidReplyMap[id]); source->uuidReplyMap.erase(id); - delete v; } else { DebugOut() << "get methodReply has been recieved, without a request being in!. This is likely due to a request coming in after the timeout has elapsed.\n"; } + + delete v; } } else -- 2.7.4