summaryrefslogtreecommitdiffstats
path: root/src/mesa/shader/program_lexer.l
diff options
context:
space:
mode:
authorIan Romanick <[email protected]>2009-11-06 11:17:00 -0800
committerIan Romanick <[email protected]>2009-11-06 11:17:00 -0800
commit4e4c2ee1fd574d1d651c559f46afb6ca5487156d (patch)
treebac4ff3a1bd0580ff321cac44d5eed9fd347694c /src/mesa/shader/program_lexer.l
parent96e938f62c729fab74601627d54c9c4cf499ebdf (diff)
parent9348ac03ce23392013ba22c22a182eea4453027a (diff)
Merge branch 'mesa_7_6_branch'
This should fix the memory leaks in the assembly parser without the regressions. The conflicts in program_lexer.l were related to changes in returning strings between the branches (always return IDENTIFIER vs. returing either IDENTIFIER or USED_IDENTIFIER). The conflicts in program_parse.y were related to two changes in master One change prints a variable name in an error message. The other change adds outputVarSize to the OUTPUT_statement rule. The cause the position of the IDENTIFIER to change from $2 to $3. Conflicts: src/mesa/shader/lex.yy.c src/mesa/shader/program_lexer.l src/mesa/shader/program_parse.tab.c src/mesa/shader/program_parse.y
Diffstat (limited to 'src/mesa/shader/program_lexer.l')
-rw-r--r--src/mesa/shader/program_lexer.l41
1 files changed, 1 insertions, 40 deletions
diff --git a/src/mesa/shader/program_lexer.l b/src/mesa/shader/program_lexer.l
index e8dae7bc267..e2acb3c0c96 100644
--- a/src/mesa/shader/program_lexer.l
+++ b/src/mesa/shader/program_lexer.l
@@ -77,45 +77,6 @@
#define SWIZZLE_INVAL MAKE_SWIZZLE4(SWIZZLE_NIL, SWIZZLE_NIL, \
SWIZZLE_NIL, SWIZZLE_NIL)
-/**
- * Send a string to the parser using asm_parser_state::string_dumpster
- *
- * Sends a string to the parser using asm_parser_state::string_dumpster as a
- * temporary storage buffer. Data previously stored in
- * asm_parser_state::string_dumpster will be lost. If
- * asm_parser_state::string_dumpster is not large enough to hold the new
- * string, the buffer size will be increased. The buffer size is \b never
- * decreased.
- *
- * \param state Assembler parser state tracking
- * \param str String to be passed to the parser
- *
- * \return
- * A pointer to asm_parser_state::string_dumpster on success or \c NULL on
- * failure. Currently the only failure case is \c ENOMEM.
- */
-static char *
-return_string(struct asm_parser_state *state, const char *str)
-{
- const size_t len = strlen(str);
-
- if (len >= state->dumpster_size) {
- char *const dumpster = _mesa_realloc(state->string_dumpster,
- state->dumpster_size,
- len + 1);
- if (dumpster == NULL) {
- return NULL;
- }
-
- state->string_dumpster = dumpster;
- state->dumpster_size = len + 1;
- }
-
- memcpy(state->string_dumpster, str, len + 1);
- return state->string_dumpster;
-}
-
-
static unsigned
mask_from_char(char c)
{
@@ -161,7 +122,7 @@ swiz_from_char(char c)
static int
handle_ident(struct asm_parser_state *state, const char *text, YYSTYPE *lval)
{
- lval->string = return_string(state, text);
+ lval->string = strdup(text);
return (_mesa_symbol_table_find_symbol(state->st, 0, text) == NULL)
? IDENTIFIER : USED_IDENTIFIER;