diff options
Diffstat (limited to 'src/xine-utils/xmllexer.c')
-rw-r--r-- | src/xine-utils/xmllexer.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/xine-utils/xmllexer.c b/src/xine-utils/xmllexer.c index df483e9db..579007e52 100644 --- a/src/xine-utils/xmllexer.c +++ b/src/xine-utils/xmllexer.c @@ -144,7 +144,7 @@ typedef enum { STATE_IDENT /* must be last */ } lexer_state_t; -int lexer_get_token(char ** _tok, int * _tok_size) { +int lexer_get_token_d(char ** _tok, int * _tok_size, int fixed) { char *tok = *_tok; int tok_size = *_tok_size; int tok_pos = 0; @@ -515,12 +515,14 @@ int lexer_get_token(char ** _tok, int * _tok_size) { /* pb */ if (tok_pos >= tok_size) { + if (fixed) + return T_ERROR; *_tok_size *= 2; *_tok = realloc (*_tok, *_tok_size); lprintf("token buffer is too small\n"); lprintf("increasing buffer size to %d bytes\n", *_tok_size); if (*_tok) { - return lexer_get_token (_tok, _tok_size); + return lexer_get_token_d (_tok, _tok_size, 0); } else { return T_ERROR; } @@ -566,6 +568,12 @@ int lexer_get_token(char ** _tok, int * _tok_size) { return T_ERROR; } +/* for ABI compatibility */ +int lexer_get_token (char *tok, int tok_size) +{ + return lexer_get_token_d (&tok, &tok_size, 1); +} + static struct { char code; unsigned char namelen; |