projects
/
carl9170fw.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
kconfig: fix memory leak when EOF is encountered in quotation
[carl9170fw.git]
/
config
/
zconf.l
diff --git
a/config/zconf.l
b/config/zconf.l
index d0f5b132a9b39802680a3f07343d0c36bf83e4ee..40ccc135fa1d568cba6fb44338374b54a2f954f4 100644
(file)
--- a/
config/zconf.l
+++ b/
config/zconf.l
@@
-73,7
+73,7
@@
static void warn_ignored_character(char chr)
{
fprintf(stderr,
"%s:%d:warning: ignoring unsupported character '%c'\n",
{
fprintf(stderr,
"%s:%d:warning: ignoring unsupported character '%c'\n",
-
zconf_curname(), zconf_lineno()
, chr);
+
current_file->name, yylineno
, chr);
}
%}
}
%}
@@
-114,8
+114,16
@@
n [A-Za-z0-9_-]
yylval.string = text;
return T_VARIABLE;
}
yylval.string = text;
return T_VARIABLE;
}
+ ({n}|$)+ {
+ /* this token includes at least one '$' */
+ yylval.string = expand_token(yytext, yyleng);
+ if (strlen(yylval.string))
+ return T_VARIABLE;
+ free(yylval.string);
+ }
"=" { BEGIN(ASSIGN_VAL); yylval.flavor = VAR_RECURSIVE; return T_ASSIGN; }
":=" { BEGIN(ASSIGN_VAL); yylval.flavor = VAR_SIMPLE; return T_ASSIGN; }
"=" { BEGIN(ASSIGN_VAL); yylval.flavor = VAR_RECURSIVE; return T_ASSIGN; }
":=" { BEGIN(ASSIGN_VAL); yylval.flavor = VAR_SIMPLE; return T_ASSIGN; }
+ "+=" { BEGIN(ASSIGN_VAL); yylval.flavor = VAR_APPEND; return T_ASSIGN; }
[[:blank:]]+
. warn_ignored_character(*yytext);
\n {
[[:blank:]]+
. warn_ignored_character(*yytext);
\n {
@@
-213,6
+221,8
@@
n [A-Za-z0-9_-]
}
<<EOF>> {
BEGIN(INITIAL);
}
<<EOF>> {
BEGIN(INITIAL);
+ yylval.string = text;
+ return T_WORD_QUOTE;
}
}
}
}