aboutsummaryrefslogtreecommitdiffhomepage
path: root/tokenizer.c
diff options
context:
space:
mode:
authorGravatar axel <axel@liljencrantz.se>2006-07-15 22:40:05 +1000
committerGravatar axel <axel@liljencrantz.se>2006-07-15 22:40:05 +1000
commitc96382152c87ebec9e31f7b4c5f6295bc71f90ce (patch)
treef5834b27ae29b44002bc0326507434d5f7ca00b4 /tokenizer.c
parentaf0bd61fb54723f910383bc0c2d24cab8d922d65 (diff)
Fixes for the tokenizer to correctly return error values on invalid input
darcs-hash:20060715124005-ac50b-a3f06a51b53573a07db44f9ce6796f253b2596e9.gz
Diffstat (limited to 'tokenizer.c')
-rw-r--r--tokenizer.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/tokenizer.c b/tokenizer.c
index 50fb61ed..75343a5c 100644
--- a/tokenizer.c
+++ b/tokenizer.c
@@ -118,10 +118,12 @@ void tok_init( tokenizer *tok, const wchar_t *b, int flags )
{
CHECK( tok, );
- CHECK( b, );
memset( tok, 0, sizeof( tokenizer) );
+ CHECK( b, );
+
+
tok->accept_unfinished = flags & TOK_ACCEPT_UNFINISHED;
tok->show_comments = flags & TOK_SHOW_COMMENTS;
tok->has_next=1;
@@ -162,7 +164,8 @@ void tok_destroy( tokenizer *tok )
int tok_last_type( tokenizer *tok )
{
- CHECK( tok, 0 );
+ CHECK( tok, TOK_ERROR );
+ CHECK( tok->buff, TOK_ERROR );
return tok->last_type;
}
@@ -176,6 +179,12 @@ wchar_t *tok_last( tokenizer *tok )
int tok_has_next( tokenizer *tok )
{
+ /*
+ Return 1 on broken tokenizer
+ */
+ CHECK( tok, 1 );
+ CHECK( tok->buff, 1 );
+
/* fwprintf( stderr, L"has_next is %ls \n", tok->has_next?L"true":L"false" );*/
return tok->has_next;
}
@@ -496,6 +505,7 @@ void tok_next( tokenizer *tok )
{
CHECK( tok, );
+ CHECK( tok->buff, );
if( tok_last_type( tok ) == TOK_ERROR )
{