summaryrefslogtreecommitdiff
path: root/src/mesa/shader/slang/slang_utility.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/mesa/shader/slang/slang_utility.c')
-rw-r--r--src/mesa/shader/slang/slang_utility.c21
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 54fcc8a238..28837248df 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)