From eedefef10ef19172a26e813372af174007d6c995 Mon Sep 17 00:00:00 2001 From: Daniel Silverstone Date: Fri, 22 Aug 2008 10:47:02 +0000 Subject: Play with CHUNK_SIZE to attempt to tickle bugs. Causes tree tests to fail with a double-free svn path=/trunk/hubbub/; revision=5172 --- test/parser.c | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) (limited to 'test/parser.c') diff --git a/test/parser.c b/test/parser.c index 1ab77d7..31cf541 100644 --- a/test/parser.c +++ b/test/parser.c @@ -19,22 +19,16 @@ static void *myrealloc(void *ptr, size_t len, void *pw) return realloc(ptr, len); } -int main(int argc, char **argv) +static int run_test(int argc, char **argv, unsigned int CHUNK_SIZE) { hubbub_parser *parser; hubbub_parser_optparams params; FILE *fp; size_t len, origlen; -#define CHUNK_SIZE (4096) uint8_t buf[CHUNK_SIZE]; const char *charset; hubbub_charset_source cssource; - if (argc != 3) { - printf("Usage: %s \n", argv[0]); - return 1; - } - /* Initialise library */ assert(hubbub_initialise(argv[1], myrealloc, NULL) == HUBBUB_OK); @@ -91,6 +85,23 @@ int main(int argc, char **argv) return 0; } +int main(int argc, char **argv) +{ + int ret; + int shift; + int offset; + if (argc != 3) { + printf("Usage: %s \n", argv[0]); + return 1; + } +#define DO_TEST(n) if ((ret = run_test(argc, argv, (n))) != 0) return ret + for (shift = 0; (1 << shift) != 16384; shift++) + for (offset = 0; offset < 10; offset += 3) + DO_TEST((1 << shift) + offset); + return 0; +#undef DO_TEST +} + hubbub_error token_handler(const hubbub_token *token, void *pw) { static const char *token_names[] = { -- cgit v1.2.3