From 4ff070b731aceba68f1a5aab9500e4923f5923a6 Mon Sep 17 00:00:00 2001 From: zvon Date: Fri, 29 May 2020 20:53:27 +0200 Subject: [PATCH] Free memory --- dbus_client.c | 7 +++++++ dbus_client.h | 1 + main.c | 11 ++++++++--- metadata.c | 15 +++++++++++++++ metadata.h | 1 + 5 files changed, 32 insertions(+), 3 deletions(-) diff --git a/dbus_client.c b/dbus_client.c index 1b7ad72..4c6fd51 100644 --- a/dbus_client.c +++ b/dbus_client.c @@ -228,3 +228,10 @@ bool dbusPlaying( DBusConnection *conn, const char *player ) { free( status ); return ret; } + +void dbusFreePlyaers( char **dbus_players ) { + for( char **player = dbus_players; *player; ++player ) { + free( *player ); + } + free( dbus_players ); +} diff --git a/dbus_client.h b/dbus_client.h index ee8b50d..7561a54 100644 --- a/dbus_client.h +++ b/dbus_client.h @@ -15,5 +15,6 @@ void dbusPrev( DBusConnection *conn, const char *player ); void dbusStop( DBusConnection *conn, const char *player ); bool dbusRunning( DBusConnection *conn, const char *player ); bool dbusPlaying( DBusConnection *conn, const char *player ); +void dbusFreePlyaers( char **dbus_players ); #endif diff --git a/main.c b/main.c index e194db1..bb10644 100644 --- a/main.c +++ b/main.c @@ -79,6 +79,7 @@ int main( int argc, char **argv ) { printMeta( &song ); } } + freeSong( &song ); } if( requests & RUNNING_FLAG ) { @@ -121,9 +122,13 @@ int main( int argc, char **argv ) { } } - free( dbus_players ); - dbusDisconnect( dbus_connection ); - mpdDisconnect( mpd_connection ); + if( sources & DBUS_FLAG ) { + dbusFreePlyaers( dbus_players ); + dbusDisconnect( dbus_connection ); + } + if( sources & MPD_FLAG ) { + mpdDisconnect( mpd_connection ); + } return ret; } diff --git a/metadata.c b/metadata.c index 058dbe0..9154d43 100644 --- a/metadata.c +++ b/metadata.c @@ -22,3 +22,18 @@ void printMeta( struct song_metadata *song ) { printf( "ART: %s\n", song->art_uri ); } } + +void freeSong( struct song_metadata *song ) { + free( (void*)song->art_uri ); + song->art_uri = NULL; + free( (void*)song->file ); + song->file = NULL; + free( (void*)song->year ); + song->year = NULL; + free( (void*)song->artist ); + song->artist = NULL; + free( (void*)song->album ); + song->album = NULL; + free( (void*)song->title ); + song->title = NULL; +} diff --git a/metadata.h b/metadata.h index b78b569..ee2f9dc 100644 --- a/metadata.h +++ b/metadata.h @@ -12,5 +12,6 @@ struct song_metadata { void printSong( struct song_metadata *song ); void printMeta( struct song_metadata *song ); +void freeSong( struct song_metadata *song ); #endif