Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(487)

Side by Side Diff: src/glsl/glsl_lexer.ll

Issue 1380873002: Merged fix for memory leak from glsl_lexer.ll (Closed) Base URL: https://chromium.googlesource.com/chromium/deps/mesa.git@master
Patch Set: Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 %{ 1 %{
2 /* 2 /*
3 * Copyright © 2008, 2009 Intel Corporation 3 * Copyright © 2008, 2009 Intel Corporation
4 * 4 *
5 * Permission is hereby granted, free of charge, to any person obtaining a 5 * Permission is hereby granted, free of charge, to any person obtaining a
6 * copy of this software and associated documentation files (the "Software"), 6 * copy of this software and associated documentation files (the "Software"),
7 * to deal in the Software without restriction, including without limitation 7 * to deal in the Software without restriction, including without limitation
8 * the rights to use, copy, modify, merge, publish, distribute, sublicense, 8 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
9 * and/or sell copies of the Software, and to permit persons to whom the 9 * and/or sell copies of the Software, and to permit persons to whom the
10 * Software is furnished to do so, subject to the following conditions: 10 * Software is furnished to do so, subject to the following conditions:
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
59 */ 59 */
60 #define KEYWORD(reserved_version, allowed_version, token) \ 60 #define KEYWORD(reserved_version, allowed_version, token) \
61 do { \ 61 do { \
62 if (yyextra->language_version >= allowed_version) { \ 62 if (yyextra->language_version >= allowed_version) { \
63 return token; \ 63 return token; \
64 } else if (yyextra->language_version >= reserved_version) { \ 64 } else if (yyextra->language_version >= reserved_version) { \
65 _mesa_glsl_error(yylloc, yyextra, \ 65 _mesa_glsl_error(yylloc, yyextra, \
66 "Illegal use of reserved word `%s'", yytext); \ 66 "Illegal use of reserved word `%s'", yytext); \
67 return ERROR_TOK; \ 67 return ERROR_TOK; \
68 } else { \ 68 } else { \
69 » yylval->identifier = strdup(yytext);» » » » \ 69 » void *mem_ctx = yyextra;» » » » » \
70 » yylval->identifier = ralloc_strdup(mem_ctx, yytext);» » \
70 return classify_identifier(yyextra, yytext); \ 71 return classify_identifier(yyextra, yytext); \
71 } \ 72 } \
72 } while (0) 73 } while (0)
73 74
74 /* The ES macro can be used in KEYWORD checks: 75 /* The ES macro can be used in KEYWORD checks:
75 * 76 *
76 * word KEYWORD(110 || ES, 400, TOKEN) 77 * word KEYWORD(110 || ES, 400, TOKEN)
77 * ...means the word is reserved in GLSL ES 1.00, while 78 * ...means the word is reserved in GLSL ES 1.00, while
78 * 79 *
79 * word KEYWORD(110, 130 || ES, TOKEN) 80 * word KEYWORD(110, 130 || ES, TOKEN)
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
201 } 202 }
202 ^{SPC}#{SPC}pragma{SPCP} { BEGIN PRAGMA; } 203 ^{SPC}#{SPC}pragma{SPCP} { BEGIN PRAGMA; }
203 204
204 <PRAGMA>\n { BEGIN 0; yylineno++; yycolumn = 0; } 205 <PRAGMA>\n { BEGIN 0; yylineno++; yycolumn = 0; }
205 <PRAGMA>. { } 206 <PRAGMA>. { }
206 207
207 <PP>\/\/[^\n]* { } 208 <PP>\/\/[^\n]* { }
208 <PP>[ \t\r]* { } 209 <PP>[ \t\r]* { }
209 <PP>: return COLON; 210 <PP>: return COLON;
210 <PP>[_a-zA-Z][_a-zA-Z0-9]* { 211 <PP>[_a-zA-Z][_a-zA-Z0-9]* {
211 » » » » yylval->identifier = strdup(yytext); 212 » » » » void *mem_ctx = yyextra;
213 » » » » yylval->identifier = ralloc_strdup(mem_ctx, y ytext);
212 return IDENTIFIER; 214 return IDENTIFIER;
213 } 215 }
214 <PP>[1-9][0-9]* { 216 <PP>[1-9][0-9]* {
215 yylval->n = strtol(yytext, NULL, 10); 217 yylval->n = strtol(yytext, NULL, 10);
216 return INTCONSTANT; 218 return INTCONSTANT;
217 } 219 }
218 <PP>\n { BEGIN 0; yylineno++; yycolumn = 0; return EOL; } 220 <PP>\n { BEGIN 0; yylineno++; yycolumn = 0; return EOL; }
219 221
220 \n { yylineno++; yycolumn = 0; } 222 \n { yylineno++; yycolumn = 0; }
221 223
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
309 311
310 layout { 312 layout {
311 if ((yyextra->language_version >= 140) 313 if ((yyextra->language_version >= 140)
312 || yyextra->AMD_conservative_depth_enable 314 || yyextra->AMD_conservative_depth_enable
313 || yyextra->ARB_conservative_depth_enable 315 || yyextra->ARB_conservative_depth_enable
314 || yyextra->ARB_explicit_attrib_location_enable 316 || yyextra->ARB_explicit_attrib_location_enable
315 || yyextra->ARB_uniform_buffer_object_enable 317 || yyextra->ARB_uniform_buffer_object_enable
316 || yyextra->ARB_fragment_coord_conventions_enable) { 318 || yyextra->ARB_fragment_coord_conventions_enable) {
317 return LAYOUT_TOK; 319 return LAYOUT_TOK;
318 } else { 320 } else {
319 » » yylval->identifier = strdup(yytext); 321 » » void *mem_ctx = yyextra;
322 » » yylval->identifier = ralloc_strdup(mem_ctx, yytext);
320 return IDENTIFIER; 323 return IDENTIFIER;
321 } 324 }
322 } 325 }
323 326
324 \+\+ return INC_OP; 327 \+\+ return INC_OP;
325 -- return DEC_OP; 328 -- return DEC_OP;
326 \<= return LE_OP; 329 \<= return LE_OP;
327 >= return GE_OP; 330 >= return GE_OP;
328 == return EQ_OP; 331 == return EQ_OP;
329 != return NE_OP; 332 != return NE_OP;
(...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after
504 { 507 {
505 yylex_init_extra(state, & state->scanner); 508 yylex_init_extra(state, & state->scanner);
506 yy_scan_string(string, state->scanner); 509 yy_scan_string(string, state->scanner);
507 } 510 }
508 511
509 void 512 void
510 _mesa_glsl_lexer_dtor(struct _mesa_glsl_parse_state *state) 513 _mesa_glsl_lexer_dtor(struct _mesa_glsl_parse_state *state)
511 { 514 {
512 yylex_destroy(state->scanner); 515 yylex_destroy(state->scanner);
513 } 516 }
OLDNEW
« chromium_gensrc/mesa/glsl_lexer.cc ('K') | « chromium_gensrc/mesa/glsl_lexer.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698