diff options
-rw-r--r-- | wiretap/ascend-int.h | 4 | ||||
-rw-r--r-- | wiretap/ascend.y | 10 | ||||
-rw-r--r-- | wiretap/ascend_scanner.l | 8 |
3 files changed, 13 insertions, 9 deletions
diff --git a/wiretap/ascend-int.h b/wiretap/ascend-int.h index c6bb3cc019..791cf751ae 100644 --- a/wiretap/ascend-int.h +++ b/wiretap/ascend-int.h @@ -36,8 +36,8 @@ typedef struct { typedef struct { FILE_T fh; const gchar *ascend_parse_error; - int *err; - gchar **err_info; + int err; + gchar *err_info; struct ascend_phdr *pseudo_header; guint8 *pkt_data; diff --git a/wiretap/ascend.y b/wiretap/ascend.y index fdd6be7c51..cc1bda085f 100644 --- a/wiretap/ascend.y +++ b/wiretap/ascend.y @@ -448,6 +448,7 @@ run_ascend_parser(FILE_T fh, struct wtap_pkthdr *phdr, guint8 *pd, ascend_state_t *parser_state, int *err, gchar **err_info) { yyscan_t scanner = NULL; + int status; if (ascendlex_init(&scanner) != 0) { /* errno is set if this fails */ @@ -459,8 +460,8 @@ run_ascend_parser(FILE_T fh, struct wtap_pkthdr *phdr, guint8 *pd, ascendset_extra(parser_state, scanner); parser_state->fh = fh; parser_state->ascend_parse_error = NULL; - parser_state->err = err; - parser_state->err_info = err_info; + parser_state->err = 0; + parser_state->err_info = NULL; parser_state->pseudo_header = &phdr->pseudo_header.ascend; parser_state->pkt_data = pd; @@ -490,7 +491,10 @@ run_ascend_parser(FILE_T fh, struct wtap_pkthdr *phdr, guint8 *pd, */ parser_state->pseudo_header->call_num[0] = '\0'; - return yyparse(scanner, parser_state, fh); + status = yyparse(scanner, parser_state, fh); + *err = parser_state->err; + *err_info = parser_state->err_info; + return status; } void diff --git a/wiretap/ascend_scanner.l b/wiretap/ascend_scanner.l index 260d820b46..887311ee54 100644 --- a/wiretap/ascend_scanner.l +++ b/wiretap/ascend_scanner.l @@ -79,10 +79,10 @@ ascend_state_t *parser_state = ascendget_extra(yyscanner); \ int c = file_getc(parser_state->fh); \ if (c == EOF) { \ - *(parser_state->err) = file_error(parser_state->fh, \ - parser_state->err_info); \ - if (*(parser_state->err) == 0) \ - *(parser_state->err) = WTAP_ERR_SHORT_READ; \ + parser_state->err = file_error(parser_state->fh, \ + &parser_state->err_info); \ + if (parser_state->err == 0) \ + parser_state->err = WTAP_ERR_SHORT_READ; \ result = YY_NULL; \ } else { \ buf[0] = c; \ |