don't free x after y = realloc(x, N) even if y != x found by llvm/scan-build
Index: keynote.l =================================================================== RCS file: /cvs/src/lib/libkeynote/keynote.l,v retrieving revision 1.20 diff -u -p -U17 -r1.20 keynote.l --- keynote.l 29 Nov 2013 19:00:51 -0000 1.20 +++ keynote.l 4 Feb 2015 11:00:30 -0000 @@ -272,37 +272,34 @@ keynote_lex_add(void *s, int type) p = (struct lex_list *) realloc(keynote_lex_list, keynote_max_lex_list * sizeof(struct lex_list)); if (p == (struct lex_list *) NULL) { switch (type) { case LEXTYPE_CHAR: free(s); break; } keynote_max_lex_list /= 2; keynote_errno = ERROR_MEMORY; return -1; } - if (p != keynote_lex_list) - free(keynote_lex_list); - keynote_lex_list = p; keynote_lex_list[i].lex_s = s; keynote_lex_list[i++].lex_type = type; keynote_lex_counter++; /* Zero out the rest */ memset(&(keynote_lex_list[i]), 0, (keynote_max_lex_list - i) * sizeof(struct lex_list)); return RESULT_TRUE; } /* * Remove string. */ void keynote_lex_remove(void *s)