diff options
Diffstat (limited to 'src/mesa/shader/slang/slang_utility.c')
-rw-r--r-- | src/mesa/shader/slang/slang_utility.c | 36 |
1 files changed, 28 insertions, 8 deletions
diff --git a/src/mesa/shader/slang/slang_utility.c b/src/mesa/shader/slang/slang_utility.c index 0fbfcc5840a..786b8990dfe 100644 --- a/src/mesa/shader/slang/slang_utility.c +++ b/src/mesa/shader/slang/slang_utility.c @@ -1,8 +1,8 @@ /* * Mesa 3-D graphics library - * Version: 6.6 + * Version: 6.5.3 * - * Copyright (C) 2005-2006 Brian Paul All Rights Reserved. + * Copyright (C) 2005-2007 Brian Paul All Rights Reserved. * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), @@ -30,6 +30,7 @@ #include "imports.h" #include "slang_utility.h" +#include "slang_mem.h" char * slang_string_concat (char *dst, const char *src) @@ -155,8 +156,13 @@ slang_atom_pool_destruct (slang_atom_pool * pool) slang_atom_entry *next; next = entry->next; +#if USE_MEMPOOL + _slang_free(entry->id); + _slang_free(entry); +#else slang_alloc_free(entry->id); slang_alloc_free(entry); +#endif entry = next; } } @@ -165,7 +171,8 @@ slang_atom_pool_destruct (slang_atom_pool * pool) /* * Search the atom pool for an atom with a given name. * If atom is not found, create and add it to the pool. - * Returns ATOM_NULL if the atom was not found and the function failed to create a new atom. + * Returns ATOM_NULL if the atom was not found and the function failed + * to create a new atom. */ slang_atom slang_atom_pool_atom(slang_atom_pool * pool, const char * id) @@ -187,8 +194,10 @@ slang_atom_pool_atom(slang_atom_pool * pool, const char * id) } hash %= SLANG_ATOM_POOL_SIZE; - /* Now the hash points to a linked list of atoms with names that have the same hash value. - * Search the linked list for a given name. */ + /* Now the hash points to a linked list of atoms with names that + * have the same hash value. Search the linked list for a given + * name. + */ entry = &pool->entries[hash]; while (*entry != NULL) { /* If the same, return the associated atom. */ @@ -199,15 +208,26 @@ slang_atom_pool_atom(slang_atom_pool * pool, const char * id) } /* Okay, we have not found an atom. Create a new entry for it. - * Note that the <entry> points to the last entry's <next> field. */ + * Note that the <entry> points to the last entry's <next> field. + */ +#if USE_MEMPOOL + *entry = (slang_atom_entry *) (_slang_alloc(sizeof(slang_atom_entry))); +#else *entry = (slang_atom_entry *) (slang_alloc_malloc(sizeof(slang_atom_entry))); +#endif if (*entry == NULL) return SLANG_ATOM_NULL; - /* Initialize a new entry. Because we'll need the actual name of the atom, we use the pointer - * to this string as an actual atom's value. */ + /* Initialize a new entry. Because we'll need the actual name of + * the atom, we use the pointer to this string as an actual atom's + * value. + */ (**entry).next = NULL; +#if USE_MEMPOOL + (**entry).id = _slang_strdup(id); +#else (**entry).id = slang_string_duplicate(id); +#endif if ((**entry).id == NULL) return SLANG_ATOM_NULL; return (slang_atom) (**entry).id; |