Merge branch 'mesa_7_6_branch'
Conflicts: src/mesa/shader/lex.yy.c src/mesa/shader/program_lexer.l
This commit is contained in:
@@ -2155,7 +2155,7 @@ ALIAS_statement: ALIAS IDENTIFIER '=' USED_IDENTIFIER
|
||||
"undefined variable binding in ALIAS statement");
|
||||
YYERROR;
|
||||
} else {
|
||||
_mesa_symbol_table_add_symbol(state->st, 0, $2, target);
|
||||
_mesa_symbol_table_add_symbol(state->st, 0, strdup($2), target);
|
||||
}
|
||||
}
|
||||
;
|
||||
@@ -2309,10 +2309,14 @@ declare_variable(struct asm_parser_state *state, char *name, enum asm_type t,
|
||||
if (exist != NULL) {
|
||||
yyerror(locp, state, "redeclared identifier");
|
||||
} else {
|
||||
s = calloc(1, sizeof(struct asm_symbol));
|
||||
s->name = name;
|
||||
const size_t name_len = strlen(name);
|
||||
|
||||
s = calloc(1, sizeof(struct asm_symbol) + name_len + 1);
|
||||
s->name = (char *)(s + 1);
|
||||
s->type = t;
|
||||
|
||||
memcpy((char *) s->name, name, name_len + 1);
|
||||
|
||||
switch (t) {
|
||||
case at_temp:
|
||||
if (state->prog->NumTemporaries >= state->limits->MaxTemps) {
|
||||
@@ -2560,6 +2564,11 @@ _mesa_parse_arb_program(GLcontext *ctx, GLenum target, const GLubyte *str,
|
||||
_mesa_memcpy (strz, str, len);
|
||||
strz[len] = '\0';
|
||||
|
||||
if (state->prog->String != NULL) {
|
||||
_mesa_free(state->prog->String);
|
||||
state->prog->String = NULL;
|
||||
}
|
||||
|
||||
state->prog->String = strz;
|
||||
|
||||
state->st = _mesa_symbol_table_ctor();
|
||||
@@ -2649,7 +2658,6 @@ error:
|
||||
for (sym = state->sym; sym != NULL; sym = temp) {
|
||||
temp = sym->next;
|
||||
|
||||
_mesa_free((void *) sym->name);
|
||||
_mesa_free(sym);
|
||||
}
|
||||
state->sym = NULL;
|
||||
@@ -2657,5 +2665,10 @@ error:
|
||||
_mesa_symbol_table_dtor(state->st);
|
||||
state->st = NULL;
|
||||
|
||||
if (state->string_dumpster != NULL) {
|
||||
_mesa_free(state->string_dumpster);
|
||||
state->dumpster_size = 0;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
Reference in New Issue
Block a user