X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Frrd_lastupdate.c;h=8beb49e9bd500c4ff2306b026a310af643bf3723;hb=d49e24866f6f989a0e3a00a29281f1f9a1a1d54c;hp=47ecec75be57f50e01016d738c7e0c00069955fe;hpb=2a6a270edfda89b04722b42b57992907f871c671;p=rrdtool.git diff --git a/src/rrd_lastupdate.c b/src/rrd_lastupdate.c index 47ecec7..8beb49e 100644 --- a/src/rrd_lastupdate.c +++ b/src/rrd_lastupdate.c @@ -1,5 +1,5 @@ /***************************************************************************** - * RRDtool 1.2.23 Copyright by Tobi Oetiker, 1997-2007 + * RRDtool 1.3.1 Copyright by Tobi Oetiker, 1997-2008 ***************************************************************************** * rrd_lastupdate Get the last datum entered for each DS *****************************************************************************/ @@ -23,29 +23,26 @@ int rrd_lastupdate( if (argc < 2) { rrd_set_error("please specify an rrd"); - return -1; + goto err_out; } filename = argv[1]; rrd_file = rrd_open(filename, &rrd, RRD_READONLY); if (rrd_file == NULL) - return (-1); + goto err_free; *last_update = rrd.live_head->last_up; *ds_cnt = rrd.stat_head->ds_cnt; if (((*ds_namv) = (char **) malloc(rrd.stat_head->ds_cnt * sizeof(char *))) == NULL) { rrd_set_error("malloc fetch ds_namv array"); - rrd_free(&rrd); - return (-1); + goto err_close; } if (((*last_ds) = (char **) malloc(rrd.stat_head->ds_cnt * sizeof(char *))) == NULL) { rrd_set_error("malloc fetch last_ds array"); - rrd_free(&rrd); - free(*ds_namv); - return (-1); + goto err_free_ds_namv; } for (i = 0; i < rrd.stat_head->ds_cnt; i++) { @@ -56,4 +53,13 @@ int rrd_lastupdate( rrd_free(&rrd); rrd_close(rrd_file); return (0); + + err_free_ds_namv: + free(*ds_namv); + err_close: + rrd_close(rrd_file); + err_free: + rrd_free(&rrd); + err_out: + return (-1); }