Ticket #7093: lists.c.2.patch
File lists.c.2.patch, 1.5 KB (added by , 10 years ago) |
---|
-
tools/build/v2/engine/lists.c
14 14 #include <assert.h> 15 15 16 16 17 struct freelist_node { struct freelist_node * next; };17 union freelist_node { union freelist_node * next; LIST allow_aliasing; }; 18 18 19 static structfreelist_node * freelist[ 32 ]; /* junkpile for list_dealloc() */19 static union freelist_node * freelist[ 32 ]; /* junkpile for list_dealloc() */ 20 20 21 21 static unsigned get_bucket( unsigned size ) 22 22 { … … 30 30 unsigned const bucket = get_bucket( size ); 31 31 if ( freelist[ bucket ] ) 32 32 { 33 structfreelist_node * result = freelist[ bucket ];33 union freelist_node * result = freelist[ bucket ]; 34 34 freelist[ bucket ] = result->next; 35 35 return (LIST *)result; 36 36 } … … 42 42 { 43 43 unsigned size = list_length( l ); 44 44 unsigned bucket; 45 struct freelist_node * node = (structfreelist_node *)l;45 union freelist_node * node = (union freelist_node *)l; 46 46 47 47 if ( size == 0 ) return; 48 48 … … 372 372 int i; 373 373 for ( i = 0; i < sizeof( freelist ) / sizeof( freelist[ 0 ] ); ++i ) 374 374 { 375 structfreelist_node * l = freelist[ i ];375 union freelist_node * l = freelist[ i ]; 376 376 while ( l ) 377 377 { 378 structfreelist_node * const tmp = l;378 union freelist_node * const tmp = l; 379 379 l = l->next; 380 380 BJAM_FREE( tmp ); 381 381 }