Changeset 12398


Ignore:
Timestamp:
Apr 28, 2011, 11:13:14 PM (10 years ago)
Author:
jordan
Message:

(trunk gtk) in filter.c's category_filter_model_update(), use a string chunk for all those temporary strings that are allocated in a looop

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/gtk/filter.c

    r12357 r12398  
    134134    GtkTreeModel * model = GTK_TREE_MODEL( store );
    135135    GPtrArray * hosts = g_ptr_array_new( );
    136     GHashTable * hosts_hash = g_hash_table_new_full( g_str_hash, g_str_equal,
    137                                                      g_free, g_free );
     136    GStringChunk * strings = g_string_chunk_new( 4096 );
     137    GHashTable * hosts_hash = g_hash_table_new_full( g_str_hash, g_str_equal, NULL, g_free );
    138138    GObject * o = G_OBJECT( store );
    139     GtkTreeModel * tmodel = GTK_TREE_MODEL(
    140                                     g_object_get_qdata( o, TORRENT_MODEL_KEY ) );
     139    GtkTreeModel * tmodel = GTK_TREE_MODEL( g_object_get_qdata( o, TORRENT_MODEL_KEY ) );
    141140
    142141    g_object_steal_qdata( o, DIRTY_KEY );
     
    161160            int k;
    162161            int * count;
    163             char key[1024];
    164 
    165             gtr_get_host_from_url( key, sizeof( key ), inf->trackers[i].announce );
     162            char buf[1024];
     163            char * key;
     164
     165            gtr_get_host_from_url( buf, sizeof( buf ), inf->trackers[i].announce );
     166            key = g_string_chunk_insert( strings, buf );
     167
    166168            count = g_hash_table_lookup( hosts_hash, key );
    167169            if( count == NULL )
    168170            {
    169171                count = tr_new0( int, 1 );
    170                 g_hash_table_insert( hosts_hash, g_strdup( key ), count );
    171                 g_ptr_array_add( hosts, g_strdup( key ) );
     172                g_hash_table_insert( hosts_hash, key, count );
     173                g_ptr_array_add( hosts, key );
    172174            }
    173175
     
    176178                    break;
    177179            if( k==keyCount )
    178                 keys[keyCount++] = g_strdup( key );
     180                keys[keyCount++] = key;
    179181        }
    180182
     
    183185            int * incrementme = g_hash_table_lookup( hosts_hash, keys[i] );
    184186            ++*incrementme;
    185             g_free( keys[i] );
    186187        }
    187188        g_free( keys );
     
    292293
    293294    /* cleanup */
    294     g_ptr_array_foreach( hosts, (GFunc)g_free, NULL );
    295295    g_ptr_array_free( hosts, TRUE );
    296296    g_hash_table_unref( hosts_hash );
     297    g_string_chunk_free( strings );
    297298    return FALSE;
    298299}
Note: See TracChangeset for help on using the changeset viewer.