diff options
Diffstat (limited to 'src/mesa/shader/slang/slang_utility.c')
-rw-r--r-- | src/mesa/shader/slang/slang_utility.c | 21 |
1 files changed, 13 insertions, 8 deletions
diff --git a/src/mesa/shader/slang/slang_utility.c b/src/mesa/shader/slang/slang_utility.c index 54fcc8a2382..28837248df5 100644 --- a/src/mesa/shader/slang/slang_utility.c +++ b/src/mesa/shader/slang/slang_utility.c @@ -160,11 +160,16 @@ void slang_atom_pool_destruct (slang_atom_pool *pool) } } -slang_atom slang_atom_pool_atom (slang_atom_pool *pool, const char *id) +/** + * Search atom pool for atom with the given name. + * If name is not found, create new atom (but don't insert into pool?) + */ +slang_atom slang_atom_pool_atom (const slang_atom_pool *pool, const char *id) { GLuint hash; const char *p = id; - slang_atom_entry **entry; + slang_atom_entry * const * entry; + slang_atom_entry **newEntry = NULL; hash = 0; while (*p != '\0') @@ -187,15 +192,15 @@ slang_atom slang_atom_pool_atom (slang_atom_pool *pool, const char *id) entry = &(**entry).next; } - *entry = (slang_atom_entry *) slang_alloc_malloc (sizeof (slang_atom_entry)); - if (*entry == NULL) + *newEntry = (slang_atom_entry *) slang_alloc_malloc (sizeof (slang_atom_entry)); + if (*newEntry == NULL) return SLANG_ATOM_NULL; - (**entry).next = NULL; - (**entry).id = slang_string_duplicate (id); - if ((**entry).id == NULL) + (**newEntry).next = NULL; + (**newEntry).id = slang_string_duplicate (id); + if ((**newEntry).id == NULL) return SLANG_ATOM_NULL; - return (slang_atom) (**entry).id; + return (slang_atom) (**newEntry).id; } const char *slang_atom_pool_id (slang_atom_pool *pool, slang_atom atom) |