提交 43aeb3b8 authored 作者: Mathieu Rene's avatar Mathieu Rene

switch_dow_cmp: fix logic err in my latest commit

上级 6cfdddef
...@@ -2537,7 +2537,7 @@ static inline dow_t _dow_read_token(const char **s) ...@@ -2537,7 +2537,7 @@ static inline dow_t _dow_read_token(const char **s)
SWITCH_DECLARE(switch_bool_t) switch_dow_cmp(const char *exp, int val) SWITCH_DECLARE(switch_bool_t) switch_dow_cmp(const char *exp, int val)
{ {
dow_t cur, prev = DOW_EOF; dow_t cur, prev = DOW_EOF, range_start = DOW_EOF;
const char *p = exp; const char *p = exp;
while ((cur = _dow_read_token(&p)) != DOW_EOF) { while ((cur = _dow_read_token(&p)) != DOW_EOF) {
...@@ -2545,27 +2545,30 @@ SWITCH_DECLARE(switch_bool_t) switch_dow_cmp(const char *exp, int val) ...@@ -2545,27 +2545,30 @@ SWITCH_DECLARE(switch_bool_t) switch_dow_cmp(const char *exp, int val)
/* Reset state */ /* Reset state */
cur = prev = DOW_EOF; cur = prev = DOW_EOF;
} else if (cur == DOW_HYPHEN) { } else if (cur == DOW_HYPHEN) {
/* Save the current token and move to the next one */ /* Save the previous token and move to the next one */
prev = cur; range_start = prev;
} else if (cur == DOW_ERR) { } else if (cur == DOW_ERR) {
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Parse error for [%s] at position %td (%.6s)\n", exp, p - exp, p); switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Parse error for [%s] at position %td (%.6s)\n", exp, p - exp, p);
break; break;
} else { } else {
/* Valid day found */ /* Valid day found */
if (prev != DOW_EOF) { /* Evaluating a range */ if (range_start != DOW_EOF) { /* Evaluating a range */
if (prev < cur) { if (range_start < cur) {
if (val >= prev && val <= cur) { if (val >= range_start && val <= cur) {
return SWITCH_TRUE; return SWITCH_TRUE;
} }
} else { } else {
if (val >= cur && val <= prev) { if (val >= cur && val <= range_start) {
return SWITCH_TRUE; return SWITCH_TRUE;
} }
} }
range_start = DOW_EOF;
} else if (val == cur) { } else if (val == cur) {
return SWITCH_TRUE; return SWITCH_TRUE;
} }
} }
prev = cur;
} }
return SWITCH_FALSE; return SWITCH_FALSE;
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论