diff options
author | tilghman <tilghman@f38db490-d61c-443f-a65b-d21fe96a405b> | 2010-02-10 21:19:35 +0000 |
---|---|---|
committer | tilghman <tilghman@f38db490-d61c-443f-a65b-d21fe96a405b> | 2010-02-10 21:19:35 +0000 |
commit | 55ae987126ce9dfea30d6ba226bf876ff435a926 (patch) | |
tree | 1d13549626fdb52f8d641f25c1566738dfe2e3d8 /funcs/func_strings.c | |
parent | 8d339c2d88fce040655a15073ef6a94e4dd9b9c8 (diff) |
Fix weird issue with unit tests on optimized build - turned out to be a signing issue.
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@246200 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'funcs/func_strings.c')
-rw-r--r-- | funcs/func_strings.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/funcs/func_strings.c b/funcs/func_strings.c index faf0ce2b2..5b319c2eb 100644 --- a/funcs/func_strings.c +++ b/funcs/func_strings.c @@ -591,7 +591,8 @@ static int filter(struct ast_channel *chan, const char *cmd, char *parse, char * AST_APP_ARG(allowed); AST_APP_ARG(string); ); - char *outbuf = buf, ac; + char *outbuf = buf; + unsigned char ac; char allowed[256] = ""; size_t allowedlen = 0; int32_t bitfield[8] = { 0, }; /* 256 bits */ @@ -608,7 +609,7 @@ static int filter(struct ast_channel *chan, const char *cmd, char *parse, char * } /* Expand ranges */ - for (; *(args.allowed) && allowedlen < sizeof(allowed); ) { + for (; *(args.allowed);) { char c1 = 0, c2 = 0; size_t consumed = 0; @@ -632,13 +633,13 @@ static int filter(struct ast_channel *chan, const char *cmd, char *parse, char * for (ac = c1; ac != c2; ac++) { bitfield[ac / 32] |= 1 << (ac % 32); } + bitfield[ac / 32] |= 1 << (ac % 32); ast_debug(4, "c1=%d, c2=%d\n", c1, c2); - - /* Decrement before the loop increment */ - (args.allowed)--; } else { - bitfield[c1 / 32] |= 1 << (c1 % 32); + ac = (unsigned char) c1; + ast_debug(4, "c1=%d, consumed=%d, args.allowed=%s\n", c1, consumed, args.allowed - consumed); + bitfield[ac / 32] |= 1 << (ac % 32); } } |