cfgparse: Don’t use asprintf when parsing hex colors

This commit is contained in:
Michael Stapelberg 2011-10-21 23:09:57 +01:00
parent 3a99c914e0
commit 77961ad9c8
2 changed files with 4 additions and 9 deletions

View File

@ -138,7 +138,7 @@ EOL (\r?\n)
<WANT_STRING>[^\n]+ { yy_pop_state(); yylval.string = sstrdup(yytext); return STR; } <WANT_STRING>[^\n]+ { yy_pop_state(); yylval.string = sstrdup(yytext); return STR; }
<OUTPUT_COND>[a-zA-Z0-9_-]+ { yy_pop_state(); yylval.string = sstrdup(yytext); return OUTPUT; } <OUTPUT_COND>[a-zA-Z0-9_-]+ { yy_pop_state(); yylval.string = sstrdup(yytext); return OUTPUT; }
^[ \t]*#[^\n]* { return TOKCOMMENT; } ^[ \t]*#[^\n]* { return TOKCOMMENT; }
<COLOR_COND>[0-9a-fA-F]+ { yy_pop_state(); yylval.string = sstrdup(yytext); return HEX; } <COLOR_COND>#[0-9a-fA-F]+ { yy_pop_state(); yylval.string = sstrdup(yytext+1); return HEXCOLOR; }
<ASSIGN_TARGET_COND>[ \t]*→[ \t]* { BEGIN(WANT_STRING); } <ASSIGN_TARGET_COND>[ \t]*→[ \t]* { BEGIN(WANT_STRING); }
<ASSIGN_TARGET_COND>[ \t]+ { BEGIN(WANT_STRING); } <ASSIGN_TARGET_COND>[ \t]+ { BEGIN(WANT_STRING); }
[0-9]+ { yylval.number = atoi(yytext); return NUMBER; } [0-9]+ { yylval.number = atoi(yytext); return NUMBER; }

View File

@ -590,7 +590,6 @@ void parse_file(const char *f) {
%token <string> WORD "<word>" %token <string> WORD "<word>"
%token <string> STR "<string>" %token <string> STR "<string>"
%token <string> STR_NG "<string (non-greedy)>" %token <string> STR_NG "<string (non-greedy)>"
%token <string> HEX "<hex>"
%token <string> HEXCOLOR "#<hex>" %token <string> HEXCOLOR "#<hex>"
%token <string> OUTPUT "<RandR output>" %token <string> OUTPUT "<RandR output>"
%token TOKBINDCODE %token TOKBINDCODE
@ -1506,14 +1505,10 @@ color:
; ;
colorpixel: colorpixel:
'#' HEX HEXCOLOR
{ {
char *hex; $$ = get_colorpixel($1);
if (asprintf(&hex, "#%s", $2) == -1) free($1);
die("asprintf()");
free($2);
$$ = get_colorpixel(hex);
free(hex);
} }
; ;