fix-nickcolor-memleak.diff
changeset 90 bed5beae28c5
parent 89 ce4c4447dbd4
child 91 51d326d5cb92
equal deleted inserted replaced
89:ce4c4447dbd4 90:bed5beae28c5
     1 # HG changeset patch
       
     2 # Parent a70b6bce62ccc3866f844b7a5e4e6bb27309c11f
       
     3 Fix memleak on replacing nickcolor rules
       
     4 
       
     5 diff -r a70b6bce62cc -r 646da4f1d2e1 mcabber/mcabber/screen.c
       
     6 --- a/mcabber/mcabber/screen.c	Fri Jan 18 11:23:51 2013 +0200
       
     7 +++ b/mcabber/mcabber/screen.c	Mon Mar 11 21:45:20 2013 +0200
       
     8 @@ -338,11 +338,15 @@
       
     9        g_free(mnick);
       
    10      } else {
       
    11        nickcolor *nc = g_new(nickcolor, 1);
       
    12 +      nickcolor *oc;
       
    13        ensure_string_htable(&nickcolors, NULL);
       
    14        nc->manual = TRUE;
       
    15        nc->color = cl;
       
    16        // Free the struct, if any there already
       
    17 -      g_free(g_hash_table_lookup(nickcolors, mnick));
       
    18 +      if ((oc = g_hash_table_lookup(nickcolors, mnick))) {
       
    19 +        g_free(oc -> color);
       
    20 +        g_free(oc);
       
    21 +      }
       
    22        // Save the new ones
       
    23        g_hash_table_replace(nickcolors, mnick, nc);
       
    24        g_hash_table_replace(nickcolors, snick, nc);