X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Frrd_lastupdate.c;h=526ccb6b7310236575866d32abefdd259bc2edb0;hb=2f9c0721d1f7e9eceae3d04e197d0e4a46eeb3b1;hp=79274b55c929c727e27cd5d381b507498618fcd9;hpb=009ac7ac9dde1ba7c450b230b9118cff2cedc9f6;p=rrdtool.git diff --git a/src/rrd_lastupdate.c b/src/rrd_lastupdate.c index 79274b5..526ccb6 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.2.99907080300 Copyright by Tobi Oetiker, 1997-2007 ***************************************************************************** * 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++) { @@ -54,7 +51,15 @@ int rrd_lastupdate( } rrd_free(&rrd); - close(rrd_file->fd); 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); }