Repository : ssh://git@open-mesh.org/alfred
On branch : master
commit 303907b7023a06aeb61b51bf9324ceefd7bb34de Author: Sven Eckelmann sven@narfation.org Date: Sat May 24 13:44:09 2014 +0200
alfred: Use pre-allocated object for global variables
The object storing the global variables is a good way to keep track of all data. But it is unnecessary to allocate an object on the heap for it. Using an object with static storage allows better compiler optimization and makes checking for actual memory leaks (unreachable memory) easier.
Signed-off-by: Sven Eckelmann sven@narfation.org Signed-off-by: Simon Wunderlich sw@simonwunderlich.de
303907b7023a06aeb61b51bf9324ceefd7bb34de gpsd/alfred-gpsd.c | 7 +++---- main.c | 6 ++---- vis/vis.c | 7 +++---- 3 files changed, 8 insertions(+), 12 deletions(-)
diff --git a/gpsd/alfred-gpsd.c b/gpsd/alfred-gpsd.c index b71a9b2..ef20f28 100644 --- a/gpsd/alfred-gpsd.c +++ b/gpsd/alfred-gpsd.c @@ -21,6 +21,8 @@
#include "alfred-gpsd.h"
+static struct globals gpsd_globals; + static int alfred_open_sock(struct globals *globals) { struct sockaddr_un addr; @@ -394,10 +396,7 @@ static struct globals *gpsd_init(int argc, char *argv[]) {NULL, 0, NULL, 0}, };
- globals = malloc(sizeof(*globals)); - if (!globals) - return NULL; - + globals = &gpsd_globals; memset(globals, 0, sizeof(*globals));
globals->opmode = OPMODE_CLIENT; diff --git a/main.c b/main.c index 32fb9b8..d848589 100644 --- a/main.c +++ b/main.c @@ -27,6 +27,7 @@ #include "alfred.h" #include "packet.h"
+static struct globals alfred_globals;
static void alfred_usage(void) { @@ -69,10 +70,7 @@ static struct globals *alfred_init(int argc, char *argv[]) {NULL, 0, NULL, 0}, };
- globals = malloc(sizeof(*globals)); - if (!globals) - return NULL; - + globals = &alfred_globals; memset(globals, 0, sizeof(*globals));
globals->opmode = OPMODE_SLAVE; diff --git a/vis/vis.c b/vis/vis.c index a5ac664..31f60d7 100644 --- a/vis/vis.c +++ b/vis/vis.c @@ -37,6 +37,8 @@ #include <unistd.h> #include "debugfs.h"
+static struct globals vis_globals; + static char *read_file(char *fname) { FILE *fp; @@ -832,10 +834,7 @@ static struct globals *vis_init(int argc, char *argv[]) {NULL, 0, NULL, 0}, };
- globals = malloc(sizeof(*globals)); - if (!globals) - return NULL; - + globals = &vis_globals; memset(globals, 0, sizeof(*globals));
globals->opmode = OPMODE_CLIENT;