summaryrefslogtreecommitdiffstats
path: root/src/Backtrace
diff options
context:
space:
mode:
authorKarel Klic <kklic@redhat.com>2010-02-03 23:50:50 +0100
committerKarel Klic <kklic@redhat.com>2010-02-03 23:50:50 +0100
commiteb7483e262e29fdebb676c18453447247f3c0545 (patch)
treea03b37b441044031cd69f52e3b940dcb96a979b5 /src/Backtrace
parentf7c4cfae10637533bacb21503d7cc41a7575ec0a (diff)
downloadabrt-eb7483e262e29fdebb676c18453447247f3c0545.tar.gz
abrt-eb7483e262e29fdebb676c18453447247f3c0545.tar.xz
abrt-eb7483e262e29fdebb676c18453447247f3c0545.zip
Fixed parsing backtrace from rhbz#549293
Diffstat (limited to 'src/Backtrace')
-rw-r--r--src/Backtrace/parser.y24
1 files changed, 18 insertions, 6 deletions
diff --git a/src/Backtrace/parser.y b/src/Backtrace/parser.y
index 36a8e346..19032829 100644
--- a/src/Backtrace/parser.y
+++ b/src/Backtrace/parser.y
@@ -267,12 +267,12 @@ variables_line : variables_char_no_framestart
variables_char : '#' | variables_char_no_framestart
;
-/* Manually synchronized with function_args_char, except the first line. */
-variables_char_no_framestart : digit | nondigit | '"' | '(' | ')'
+/* Manually synchronized with function_args_char_base, except the first line. */
+variables_char_no_framestart : digit | nondigit | '"' | '(' | ')' | '\\'
| '+' | '-' | '<' | '>' | '/' | '.'
| '[' | ']' | '?' | '\'' | '`' | ','
| '=' | '{' | '}' | '^' | '&' | '$'
- | ':' | ';' | '\\' | '!' | '@' | '*'
+ | ':' | ';' | '!' | '@' | '*'
| '%' | '|' | '~'
;
@@ -313,13 +313,21 @@ function_args_string : '"' wsa function_args_string_sequence wsa '"'
/* Manually synchronized with variables_char_no_framestart,
* except the first line.
*/
-function_args_char : digit | nondigit | '#'
+function_args_char_base : digit | nondigit | '#'
| '+' | '-' | '<' | '>' | '/' | '.'
| '[' | ']' | '?' | '\'' | '`' | ','
| '=' | '{' | '}' | '^' | '&' | '$'
- | ':' | ';' | '\\' | '!' | '@' | '*'
+ | ':' | ';' | '!' | '@' | '*'
| '%' | '|' | '~'
;
+function_args_escaped_char : '\\' function_args_char_base
+ | '\\' '\\'
+ | '\\' '"'
+;
+function_args_char : function_args_char_base
+ | function_args_escaped_char
+;
+
function_args_string_sequence : function_args_string_char
| function_args_string_sequence function_args_string_char
@@ -329,7 +337,6 @@ function_args_string_sequence : function_args_string_char
function_args_string_char : function_args_char | '(' | ')'
;
-
file_name : file_name_char { $$ = strbuf_new(); strbuf_append_char($$, $1); }
| file_name file_name_char { $$ = strbuf_append_char($1, $2); }
;
@@ -408,6 +415,11 @@ identifier_braces_inside : identifier_braces_inside_char %dprec 1
strbuf_free($3);
$$ = strbuf_append_char($1, $4);
}
+ | identifier_braces_inside '(' ')' %dprec 1
+ {
+ $$ = strbuf_append_char($1, $2);
+ $$ = strbuf_append_char($1, $3);
+ }
| identifier_braces_inside identifier_template %dprec 2
{
$$ = strbuf_append_str($1, $2->buf);