summaryrefslogtreecommitdiffstats
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.c36
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;