Allocate empty function name in the string pool.

Inside the grammar for function_identifier if the .function is null an
empty function name is allocated. This is allocated on the stack and
passed into TFunction as a pointer. TFunction just stores that pointer.

Later, when we access the name we will receive an invalid usage of a
stack allocated variable. This CL switches to using NewPoolTStringn for
the empty function name.
This commit is contained in:
Dan Sinclair 2019-02-20 16:30:35 -05:00
Родитель 58d6905ea0
Коммит 756bfd0ad1
2 изменённых файлов: 4 добавлений и 4 удалений

Просмотреть файл

@ -473,8 +473,8 @@ function_identifier
if ($$.function == 0) {
// error recover
TString empty("");
$$.function = new TFunction(&empty, TType(EbtVoid), EOpNull);
TString* empty = NewPoolTString("");
$$.function = new TFunction(empty, TType(EbtVoid), EOpNull);
}
}
| non_uniform_qualifier {

Просмотреть файл

@ -4447,8 +4447,8 @@ yyreduce:
if ((yyval.interm).function == 0) {
// error recover
TString empty("");
(yyval.interm).function = new TFunction(&empty, TType(EbtVoid), EOpNull);
TString* empty = NewPoolTString("");
(yyval.interm).function = new TFunction(empty, TType(EbtVoid), EOpNull);
}
}
#line 4455 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */