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)

Reply via email to