use-gslice.diff
changeset 87 78238d26911a
parent 85 93c3cc0d7891
child 92 66f7e2aa040c
equal deleted inserted replaced
86:ac5fed257211 87:78238d26911a
     1 # HG changeset patch
     1 # HG changeset patch
     2 # Parent eea31b4da8d02b5e9aaaab062848273610f9d0dd
     2 # Parent c45500769f0c34734851c9079e57add63d083c25
     3 [work-in-progress] Use glib slices to allocate constant-size blocks
     3 Use glib slices to allocate constant-size blocks
     4 
     4 
     5 diff -r eea31b4da8d0 mcabber/mcabber/caps.c
     5 diff -r c45500769f0c mcabber/mcabber/caps.c
     6 --- a/mcabber/mcabber/caps.c	Wed May 15 12:57:08 2013 +0300
     6 --- a/mcabber/mcabber/caps.c	Wed Nov 12 02:43:42 2014 +0200
     7 +++ b/mcabber/mcabber/caps.c	Wed May 15 12:57:17 2013 +0300
     7 +++ b/mcabber/mcabber/caps.c	Wed Nov 12 03:30:06 2014 +0200
     8 @@ -52,7 +52,7 @@
     8 @@ -52,7 +52,7 @@
     9    g_hash_table_destroy(c->identities);
     9    g_hash_table_destroy(c->identities);
    10    g_hash_table_destroy(c->features);
    10    g_hash_table_destroy(c->features);
    11    g_hash_table_destroy(c->forms);
    11    g_hash_table_destroy(c->forms);
    12 -  g_free(c);
    12 -  g_free(c);
    56 -    dataform *d = g_new0(dataform, 1);
    56 -    dataform *d = g_new0(dataform, 1);
    57 +    dataform *d = g_slice_new(dataform);
    57 +    dataform *d = g_slice_new(dataform);
    58      char *f = g_strdup(formtype);
    58      char *f = g_strdup(formtype);
    59  
    59  
    60      d->fields = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, field_destroy);
    60      d->fields = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, field_destroy);
    61 diff -r eea31b4da8d0 mcabber/mcabber/commands.c
    61 diff -r c45500769f0c mcabber/mcabber/commands.c
    62 --- a/mcabber/mcabber/commands.c	Wed May 15 12:57:08 2013 +0300
    62 --- a/mcabber/mcabber/commands.c	Wed Nov 12 02:43:42 2014 +0200
    63 +++ b/mcabber/mcabber/commands.c	Wed May 15 12:57:17 2013 +0300
    63 +++ b/mcabber/mcabber/commands.c	Wed Nov 12 03:30:06 2014 +0200
    64 @@ -115,7 +115,7 @@
    64 @@ -115,7 +115,7 @@
    65        gpointer userdata = command->userdata;
    65        gpointer userdata = command->userdata;
    66        Commands = g_slist_delete_link(Commands, sl_cmd);
    66        Commands = g_slist_delete_link(Commands, sl_cmd);
    67        compl_del_category_word(COMPL_CMD, command->name);
    67        compl_del_category_word(COMPL_CMD, command->name);
    68 -      g_free(command);
    68 -      g_free(command);
    77 -  cmd *n_cmd = g_new0(cmd, 1);
    77 -  cmd *n_cmd = g_new0(cmd, 1);
    78 +  cmd *n_cmd = g_slice_new0(cmd);
    78 +  cmd *n_cmd = g_slice_new0(cmd);
    79    strncpy(n_cmd->name, name, 32-1);
    79    strncpy(n_cmd->name, name, 32-1);
    80    n_cmd->help = help;
    80    n_cmd->help = help;
    81    n_cmd->completion_flags[0] = flags_row1;
    81    n_cmd->completion_flags[0] = flags_row1;
    82 @@ -1581,7 +1581,7 @@
    82 @@ -1571,7 +1571,7 @@
    83      return NULL;
    83      return NULL;
    84    }
    84    }
    85  
    85  
    86 -  msgbuf = g_new0(char, HBB_BLOCKSIZE);
    86 -  msgbuf = g_new0(char, HBB_BLOCKSIZE);
    87 +  msgbuf = g_slice_alloc0(HBB_BLOCKSIZE);
    87 +  msgbuf = g_slice_alloc0(HBB_BLOCKSIZE);
    88    len = fread(msgbuf, 1, HBB_BLOCKSIZE-1, fd);
    88    len = fread(msgbuf, 1, HBB_BLOCKSIZE-1, fd);
    89    fclose(fd);
    89    fclose(fd);
    90  
    90  
    91 @@ -1605,7 +1605,7 @@
    91 @@ -1595,7 +1595,7 @@
    92    if (*p || (size_t)(p-msgbuf) != len) { // We're not at the End Of Line...
    92    if (*p || (size_t)(p-msgbuf) != len) { // We're not at the End Of Line...
    93      scr_LogPrint(LPRINT_LOGNORM, "Message file contains "
    93      scr_LogPrint(LPRINT_LOGNORM, "Message file contains "
    94                   "invalid characters (%s)", filename);
    94                   "invalid characters (%s)", filename);
    95 -    g_free(msgbuf);
    95 -    g_free(msgbuf);
    96 +    g_slice_free1(HBB_BLOCKSIZE, msgbuf);
    96 +    g_slice_free1(HBB_BLOCKSIZE, msgbuf);
    97      return NULL;
    97      return NULL;
    98    }
    98    }
    99  
    99  
   100 @@ -1619,7 +1619,7 @@
   100 @@ -1609,7 +1609,7 @@
   101    // It could be empty, once the trailing newlines are gone
   101    // It could be empty, once the trailing newlines are gone
   102    if (p == msgbuf && *p == '\n') {
   102    if (p == msgbuf && *p == '\n') {
   103      scr_LogPrint(LPRINT_LOGNORM, "Message file is empty (%s)", filename);
   103      scr_LogPrint(LPRINT_LOGNORM, "Message file is empty (%s)", filename);
   104 -    g_free(msgbuf);
   104 -    g_free(msgbuf);
   105 +    g_slice_free1(HBB_BLOCKSIZE, msgbuf);
   105 +    g_slice_free1(HBB_BLOCKSIZE, msgbuf);
   106      return NULL;
   106      return NULL;
   107    }
   107    }
   108  
   108  
   109 @@ -1628,7 +1628,7 @@
   109 @@ -1618,7 +1618,7 @@
   110    if (!msgbuf_utf8 && msgbuf)
   110    if (!msgbuf_utf8 && msgbuf)
   111      scr_LogPrint(LPRINT_LOGNORM, "Message file charset conversion error (%s)",
   111      scr_LogPrint(LPRINT_LOGNORM, "Message file charset conversion error (%s)",
   112                   filename);
   112                   filename);
   113 -  g_free(msgbuf);
   113 -  g_free(msgbuf);
   114 +  g_slice_free1(HBB_BLOCKSIZE, msgbuf);
   114 +  g_slice_free1(HBB_BLOCKSIZE, msgbuf);
   115    return msgbuf_utf8;
   115    return msgbuf_utf8;
   116  }
   116  }
   117  
   117  
   118 @@ -1916,7 +1916,7 @@
   118 @@ -1906,7 +1906,7 @@
   119    esub   = buddy_getsubscription(bud);
   119    esub   = buddy_getsubscription(bud);
   120    on_srv = buddy_getonserverflag(bud);
   120    on_srv = buddy_getonserverflag(bud);
   121  
   121  
   122 -  buffer = g_new(char, 4096);
   122 -  buffer = g_new(char, 4096);
   123 +  buffer = g_slice_alloc(4096);
   123 +  buffer = g_slice_alloc(4096);
   124  
   124  
   125    if (bjid) {
   125    if (bjid) {
   126      GSList *resources, *p_res;
   126      GSList *resources, *p_res;
   127 @@ -2015,7 +2015,7 @@
   127 @@ -2005,7 +2005,7 @@
   128                   type == ROSTER_TYPE_GROUP ? "group" :
   128                   type == ROSTER_TYPE_GROUP ? "group" :
   129                   (type == ROSTER_TYPE_SPECIAL ? "special" : "unknown"));
   129                   (type == ROSTER_TYPE_SPECIAL ? "special" : "unknown"));
   130    }
   130    }
   131 -  g_free(buffer);
   131 -  g_free(buffer);
   132 +  g_slice_free1(4096, buffer);
   132 +  g_slice_free1(4096, buffer);
   133  
   133  
   134    // Tell the user if this item has an annotation.
   134    // Tell the user if this item has an annotation.
   135    if (type == ROSTER_TYPE_USER ||
   135    if (type == ROSTER_TYPE_USER ||
   136 @@ -2063,7 +2063,7 @@
   136 @@ -2054,7 +2054,7 @@
   137  
   137  
   138    bjid = buddy_getjid(bud);
   138    bjid = buddy_getjid(bud);
   139  
   139  
   140 -  buffer = g_new(char, 4096);
   140 -  buffer = g_new(char, 4096);
   141 +  buffer = g_slice_alloc(4096);
   141 +  buffer = g_slice_alloc(4096);
   142    strncpy(buffer, "Room members:", 127);
   142    strncpy(buffer, "Room members:", 127);
   143    scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO, 0);
   143    scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO, 0);
   144  
   144  
   145 @@ -2118,7 +2118,7 @@
   145 @@ -2114,7 +2114,7 @@
   146      g_free(p_res->data);
   146    scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO, 0);
   147    }
   147  
   148    g_slist_free(resources);
   148    g_slist_free(resources);
   149 -  g_free(buffer);
   149 -  g_free(buffer);
   150 +  g_slice_free1(4096, buffer);
   150 +  g_slice_free1(4096, buffer);
   151  }
   151  }
   152  
   152  
   153  static void move_group_member(gpointer bud, void *groupnamedata)
   153  static void move_group_member(gpointer bud, void *groupnamedata)
   154 @@ -3110,7 +3110,7 @@
   154 @@ -3137,7 +3137,7 @@
   155    affil = buddy_getaffil(bud, nick);
   155    affil = buddy_getaffil(bud, nick);
   156    realjid = buddy_getrjid(bud, nick);
   156    realjid = buddy_getrjid(bud, nick);
   157  
   157  
   158 -  buffer = g_new(char, 4096);
   158 -  buffer = g_new(char, 4096);
   159 +  buffer = g_slice_alloc(4096);
   159 +  buffer = g_slice_alloc(4096);
   160  
   160  
   161    snprintf(buffer, 4095, "Whois [%s]", nick);
   161    snprintf(buffer, 4095, "Whois [%s]", nick);
   162    scr_WriteIncomingMessage(bjid, buffer, 0, msg_flag, 0);
   162    scr_WriteIncomingMessage(bjid, buffer, 0, msg_flag, 0);
   163 @@ -3140,7 +3140,7 @@
   163 @@ -3167,7 +3167,7 @@
   164  
   164  
   165    scr_WriteIncomingMessage(bjid, "End of WHOIS", 0, msg_flag, 0);
   165    scr_WriteIncomingMessage(bjid, "End of WHOIS", 0, msg_flag, 0);
   166  
   166  
   167 -  g_free(buffer);
   167 -  g_free(buffer);
   168 +  g_slice_free1(4096, buffer);
   168 +  g_slice_free1(4096, buffer);
   169    g_free(nick);
   169    g_free(nick);
   170    if (paramlst)
   170    if (paramlst)
   171      free_arg_lst(paramlst);
   171      free_arg_lst(paramlst);
   172 diff -r eea31b4da8d0 mcabber/mcabber/events.c
   172 diff -r c45500769f0c mcabber/mcabber/events.c
   173 --- a/mcabber/mcabber/events.c	Wed May 15 12:57:08 2013 +0300
   173 --- a/mcabber/mcabber/events.c	Wed Nov 12 02:43:42 2014 +0200
   174 +++ b/mcabber/mcabber/events.c	Wed May 15 12:57:17 2013 +0300
   174 +++ b/mcabber/mcabber/events.c	Wed Nov 12 03:30:06 2014 +0200
   175 @@ -83,7 +83,7 @@
   175 @@ -83,7 +83,7 @@
   176      return NULL;
   176      return NULL;
   177    }
   177    }
   178  
   178  
   179 -  event = g_new(evs_t, 1);
   179 -  event = g_new(evs_t, 1);
   197 -    g_free(event);
   197 -    g_free(event);
   198 +    g_slice_free(evs_t, event);
   198 +    g_slice_free(evs_t, event);
   199    }
   199    }
   200    g_slist_free(evs_list);
   200    g_slist_free(evs_list);
   201    evs_list = NULL;
   201    evs_list = NULL;
   202 diff -r eea31b4da8d0 mcabber/mcabber/hbuf.c
   202 diff -r c45500769f0c mcabber/mcabber/hbuf.c
   203 --- a/mcabber/mcabber/hbuf.c	Wed May 15 12:57:08 2013 +0300
   203 --- a/mcabber/mcabber/hbuf.c	Wed Nov 12 02:43:42 2014 +0200
   204 +++ b/mcabber/mcabber/hbuf.c	Wed May 15 12:57:17 2013 +0300
   204 +++ b/mcabber/mcabber/hbuf.c	Wed Nov 12 03:30:06 2014 +0200
   205 @@ -29,7 +29,6 @@
   205 @@ -29,7 +29,6 @@
   206  #include "utf8.h"
   206  #include "utf8.h"
   207  #include "screen.h"
   207  #include "screen.h"
   208  
   208  
   209 -
   209 -
   307 -      *array_elt = (hbb_line*)g_new(hbb_line, 1);
   307 -      *array_elt = (hbb_line*)g_new(hbb_line, 1);
   308 +      *array_elt = (hbb_line*)g_slice_new(hbb_line);
   308 +      *array_elt = (hbb_line*)g_slice_new(hbb_line);
   309        (*array_elt)->timestamp  = blk->prefix.timestamp;
   309        (*array_elt)->timestamp  = blk->prefix.timestamp;
   310        (*array_elt)->flags      = blk->prefix.flags;
   310        (*array_elt)->flags      = blk->prefix.flags;
   311        (*array_elt)->mucnicklen = blk->prefix.mucnicklen;
   311        (*array_elt)->mucnicklen = blk->prefix.mucnicklen;
   312 diff -r eea31b4da8d0 mcabber/mcabber/hooks.c
   312 diff -r c45500769f0c mcabber/mcabber/hooks.c
   313 --- a/mcabber/mcabber/hooks.c	Wed May 15 12:57:08 2013 +0300
   313 --- a/mcabber/mcabber/hooks.c	Wed Nov 12 02:43:42 2014 +0200
   314 +++ b/mcabber/mcabber/hooks.c	Wed May 15 12:57:17 2013 +0300
   314 +++ b/mcabber/mcabber/hooks.c	Wed Nov 12 03:30:06 2014 +0200
   315 @@ -99,7 +99,7 @@
   315 @@ -99,7 +99,7 @@
   316                       gint priority, gpointer userdata)
   316                       gint priority, gpointer userdata)
   317  {
   317  {
   318    GSList **hqueue = NULL;
   318    GSList **hqueue = NULL;
   319 -  hook_list_data_t *h = g_new(hook_list_data_t, 1);
   319 -  hook_list_data_t *h = g_new(hook_list_data_t, 1);
   328 -    g_free(el->data);
   328 -    g_free(el->data);
   329 +    g_slice_free(hook_list_data_t, el->data);
   329 +    g_slice_free(hook_list_data_t, el->data);
   330      *hqueue = g_slist_delete_link(*hqueue, el);
   330      *hqueue = g_slist_delete_link(*hqueue, el);
   331      // Remove hook hash table entry if the hook queue is empty
   331      // Remove hook hash table entry if the hook queue is empty
   332      if (!*hqueue)
   332      if (!*hqueue)
   333 diff -r eea31b4da8d0 mcabber/mcabber/modules.c
   333 diff -r c45500769f0c mcabber/mcabber/modules.c
   334 --- a/mcabber/mcabber/modules.c	Wed May 15 12:57:08 2013 +0300
   334 --- a/mcabber/mcabber/modules.c	Wed Nov 12 02:43:42 2014 +0200
   335 +++ b/mcabber/mcabber/modules.c	Wed May 15 12:57:17 2013 +0300
   335 +++ b/mcabber/mcabber/modules.c	Wed Nov 12 03:30:06 2014 +0200
   336 @@ -176,7 +176,7 @@
   336 @@ -176,7 +176,7 @@
   337    }
   337    }
   338  
   338  
   339    { // Register module
   339    { // Register module
   340 -    loaded_module_t *module = g_new(loaded_module_t, 1);
   340 -    loaded_module_t *module = g_new(loaded_module_t, 1);
   349 -  g_free(module);
   349 -  g_free(module);
   350 +  g_slice_free(loaded_module_t, module);
   350 +  g_slice_free(loaded_module_t, module);
   351  
   351  
   352    return NULL;
   352    return NULL;
   353  }
   353  }
   354 diff -r eea31b4da8d0 mcabber/mcabber/screen.c
   354 diff -r c45500769f0c mcabber/mcabber/screen.c
   355 --- a/mcabber/mcabber/screen.c	Wed May 15 12:57:08 2013 +0300
   355 --- a/mcabber/mcabber/screen.c	Wed Nov 12 02:43:42 2014 +0200
   356 +++ b/mcabber/mcabber/screen.c	Wed May 15 12:57:17 2013 +0300
   356 +++ b/mcabber/mcabber/screen.c	Wed Nov 12 03:30:06 2014 +0200
   357 @@ -1314,7 +1314,7 @@
   357 @@ -1360,7 +1360,7 @@
   358          wattrset(win_entry->win, get_color(COLOR_GENERAL));
   358          wattrset(win_entry->win, get_color(COLOR_GENERAL));
   359  
   359  
   360        g_free(line->text);
   360        g_free(line->text);
   361 -      g_free(line);
   361 -      g_free(line);
   362 +      g_slice_free(hbb_line, line);
   362 +      g_slice_free(hbb_line, line);
   363      } else {
   363      } else {
   364        wclrtobot(win_entry->win);
   364        wclrtobot(win_entry->win);
   365        break;
   365        break;
   366 diff -r eea31b4da8d0 mcabber/mcabber/settings.c
   366 @@ -1374,7 +1374,7 @@
   367 --- a/mcabber/mcabber/settings.c	Wed May 15 12:57:08 2013 +0300
   367        scr_buffer_scroll_lock(1);
   368 +++ b/mcabber/mcabber/settings.c	Wed May 15 12:57:17 2013 +0300
   368      }
   369 @@ -458,7 +458,7 @@
   369      g_free(line->text);
       
   370 -    g_free(line);
       
   371 +    g_slice_free(hbb_line, line);
       
   372    } else if (autolock && win_entry->bd->lock) {
       
   373      scr_buffer_scroll_lock(0);
       
   374    }
       
   375 diff -r c45500769f0c mcabber/mcabber/settings.c
       
   376 --- a/mcabber/mcabber/settings.c	Wed Nov 12 02:43:42 2014 +0200
       
   377 +++ b/mcabber/mcabber/settings.c	Wed Nov 12 03:30:06 2014 +0200
       
   378 @@ -457,7 +457,7 @@
   370      // If value is 0, we do not need to create a structure (that's
   379      // If value is 0, we do not need to create a structure (that's
   371      // the default value).
   380      // the default value).
   372      if (value) {
   381      if (value) {
   373 -      pgpdata = g_new0(T_pgpopt, 1);
   382 -      pgpdata = g_new0(T_pgpopt, 1);
   374 +      pgpdata = g_slice_new0(T_pgpopt);
   383 +      pgpdata = g_slice_new0(T_pgpopt);
   375        pgpdata->pgp_disabled = value;
   384        pgpdata->pgp_disabled = value;
   376        g_hash_table_insert(pgpopt, g_strdup(bjid), pgpdata);
   385        g_hash_table_insert(pgpopt, g_strdup(bjid), pgpdata);
   377      }
   386      }
   378 @@ -498,7 +498,7 @@
   387 @@ -497,7 +497,7 @@
   379      // If value is 0, we do not need to create a structure (that's
   388      // If value is 0, we do not need to create a structure (that's
   380      // the default value).
   389      // the default value).
   381      if (value) {
   390      if (value) {
   382 -      pgpdata = g_new0(T_pgpopt, 1);
   391 -      pgpdata = g_new0(T_pgpopt, 1);
   383 +      pgpdata = g_slice_new0(T_pgpopt);
   392 +      pgpdata = g_slice_new0(T_pgpopt);
   384        pgpdata->pgp_force = value;
   393        pgpdata->pgp_force = value;
   385        g_hash_table_insert(pgpopt, g_strdup(bjid), pgpdata);
   394        g_hash_table_insert(pgpopt, g_strdup(bjid), pgpdata);
   386      }
   395      }
   387 @@ -538,7 +538,7 @@
   396 @@ -537,7 +537,7 @@
   388      // If keyid is NULL, we do not need to create a structure (that's
   397      // If keyid is NULL, we do not need to create a structure (that's
   389      // the default value).
   398      // the default value).
   390      if (keyid) {
   399      if (keyid) {
   391 -      pgpdata = g_new0(T_pgpopt, 1);
   400 -      pgpdata = g_new0(T_pgpopt, 1);
   392 +      pgpdata = g_slice_new0(T_pgpopt);
   401 +      pgpdata = g_slice_new0(T_pgpopt);
   393        pgpdata->pgp_keyid = g_strdup(keyid);
   402        pgpdata->pgp_keyid = g_strdup(keyid);
   394        g_hash_table_insert(pgpopt, g_strdup(bjid), pgpdata);
   403        g_hash_table_insert(pgpopt, g_strdup(bjid), pgpdata);
   395      }
   404      }
   396 diff -r eea31b4da8d0 mcabber/mcabber/xmpp_iq.c
   405 diff -r c45500769f0c mcabber/mcabber/xmpp_iq.c
   397 --- a/mcabber/mcabber/xmpp_iq.c	Wed May 15 12:57:08 2013 +0300
   406 --- a/mcabber/mcabber/xmpp_iq.c	Wed Nov 12 02:43:42 2014 +0200
   398 +++ b/mcabber/mcabber/xmpp_iq.c	Wed May 15 12:57:17 2013 +0300
   407 +++ b/mcabber/mcabber/xmpp_iq.c	Wed Nov 12 03:30:06 2014 +0200
   399 @@ -765,7 +765,7 @@
   408 @@ -765,7 +765,7 @@
   400      return LM_HANDLER_RESULT_REMOVE_MESSAGE;
   409      return LM_HANDLER_RESULT_REMOVE_MESSAGE;
   401    }
   410    }
   402  
   411  
   403 -  buf = g_new0(char, 512);
   412 -  buf = g_new0(char, 512);