use function pointer to free value
This commit is contained in:
		
							parent
							
								
									72b3a4c55b
								
							
						
					
					
						commit
						6852882203
					
				@ -80,6 +80,7 @@ struct sigar_cache_entry_t {
 | 
			
		||||
typedef struct {
 | 
			
		||||
    sigar_cache_entry_t **entries;
 | 
			
		||||
    unsigned int count, size;
 | 
			
		||||
    void (*free_value)(void *ptr);
 | 
			
		||||
} sigar_cache_t;
 | 
			
		||||
 | 
			
		||||
#endif /* SIGAR_UTIL_H */
 | 
			
		||||
 | 
			
		||||
@ -20,6 +20,7 @@ sigar_cache_t *sigar_cache_new(int size)
 | 
			
		||||
    table->size = size;
 | 
			
		||||
    table->entries = malloc(ENTRIES_SIZE(size));
 | 
			
		||||
    memset(table->entries, '\0', ENTRIES_SIZE(size));
 | 
			
		||||
    table->free_value = free;
 | 
			
		||||
    return table;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -71,7 +72,7 @@ void sigar_cache_destroy(sigar_cache_t *table)
 | 
			
		||||
 | 
			
		||||
        do {
 | 
			
		||||
            if (ptr->value) {
 | 
			
		||||
                free(ptr->value);
 | 
			
		||||
                table->free_value(ptr->value);
 | 
			
		||||
            }
 | 
			
		||||
        } while ((ptr = ptr->next));
 | 
			
		||||
        free(entry);
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user