add: iptc_free(&h);
context: static int do_output(const char *tablename){	iptc_handle_t h;	const char *chain = NULL;	if (!tablename)		return for_each_table(&do_output);	h = iptc_init(tablename);	if (!h) 		exit_error(OTHER_PROBLEM, "Can't initialize: %s\n",			   iptc_strerror(errno));	if (!binary) {		time_t now = time(NULL);		printf("# Generated by iptables-save v%s on %s",		       IPTABLES_VERSION, ctime(&now));		printf("*%s\n", tablename);		/* Dump out chain names first, 		 * thereby preventing dependency conflicts */		for (chain = iptc_first_chain(&h);		     chain;		     chain = iptc_next_chain(&h)) {						printf(":%s ", chain);			if (iptc_builtin(chain, h)) {				struct ipt_counters count;				printf("%s ",				       iptc_get_policy(chain, &count, &h));				printf("[%llu:%llu]\n", count.pcnt, count.bcnt);			} else {				printf("- [0:0]\n");			}		}						for (chain = iptc_first_chain(&h);		     chain;		     chain = iptc_next_chain(&h)) {			const struct ipt_entry *e;			/* Dump out rules */			e = iptc_first_rule(chain, &h);			while(e) {				print_rule(e, &h, chain, counters);				e = iptc_next_rule(e, &h);			}		}		now = time(NULL);		printf("COMMIT\n");		printf("# Completed on %s", ctime(&now));	} else {		/* Binary, huh?  OK. */		exit_error(OTHER_PROBLEM, "Binary NYI\n");	}	return 1;}