add: if (split != fmt_default_split) MEM_FREE(piece);
context: static void ldr_show_pw_line(struct db_main *db, char *line){	int show;	char source[LINE_BUFFER_SIZE];	struct fmt_main *format;	char *(*split)(char *ciphertext, int index);	int index, count;	char *login, *ciphertext, *gecos, *home;	char *piece;	int pass, found, chars;	int hash;	struct db_cracked *current;	format = NULL;	count = ldr_split_line(&login, &ciphertext, &gecos, &home,		source, &format, db->options, line);	if (!count) return;	show = !(db->options->flags & DB_PLAINTEXTS);	if (format) {		split = format->methods.split;	} else {		split = fmt_default_split;		count = 1;	}	if (!*ciphertext) {		found = 1;		if (show) printf("%s:NO PASSWORD", login);		db->guess_count++;	} else	for (found = pass = 0; pass == 0 || (pass == 1 && found); pass++)	for (index = 0; index < count; index++) {		piece = split(ciphertext, index);		hash = ldr_cracked_hash(piece);		if ((current = db->cracked_hash[hash]))		do {			if (!strcmp(current->ciphertext, piece))				break;/* This extra check, along with ldr_cracked_hash() being case-insensitive, * is only needed for matching some pot file records produced by older * versions of John and contributed patches where split() didn't unify the * case of hex-encoded hashes. */			if (split != fmt_default_split &&			    format->methods.valid(current->ciphertext) == 1 &&			    !strcmp(split(current->ciphertext, 0), piece))				break;		} while ((current = current->next));		if (pass) {			chars = 0;			if (show) {				if (format)					chars = format->params.plaintext_length;				if (index < count - 1 && current &&				    (int)strlen(current->plaintext) != chars)					current = NULL;			}			if (current) {				if (show) {					printf("%s", current->plaintext);				} else					list_add(db->plaintexts,						current->plaintext);				db->guess_count++;			} else			while (chars--)				putchar('?');		} else		if (current) {			found = 1;			if (show) printf("%s:", login);			break;		}	}	if (found && show) {		if (source[0])			printf(":%s", source);		else			putchar('\n');	}	if (format || found) db->password_count += count;}