mirror of
https://github.com/cesanta/mongoose.git
synced 2026-11-12 16:50:21 +00:00
3 files changed
+16
-4
No files matched your search
+1
-2
@@ -17114,8 +17114,7 @@ bool mg_match(struct mg_str s, struct mg_str p, struct mg_str *caps) {
|
||||
if (caps && !caps->buf) caps->len = 0, caps->buf = &s.buf[j]; // Init cap
|
||||
ni = i++, nj = j + 1;
|
||||
} else if (nj > 0 && nj <= s.len &&
|
||||
((ni < p.len && p.buf[ni] == '#') ||
|
||||
(j < s.len && s.buf[j] != '/'))) {
|
||||
((ni < p.len && p.buf[ni] == '#') || s.buf[nj - 1] != '/')) {
|
||||
i = ni, j = nj;
|
||||
if (caps && caps->buf == NULL && caps->len == 0) {
|
||||
caps--, caps->len = 0; // Restart previous cap
|
||||
|
||||
@@ -88,8 +88,7 @@ bool mg_match(struct mg_str s, struct mg_str p, struct mg_str *caps) {
|
||||
if (caps && !caps->buf) caps->len = 0, caps->buf = &s.buf[j]; // Init cap
|
||||
ni = i++, nj = j + 1;
|
||||
} else if (nj > 0 && nj <= s.len &&
|
||||
((ni < p.len && p.buf[ni] == '#') ||
|
||||
(j < s.len && s.buf[j] != '/'))) {
|
||||
((ni < p.len && p.buf[ni] == '#') || s.buf[nj - 1] != '/')) {
|
||||
i = ni, j = nj;
|
||||
if (caps && caps->buf == NULL && caps->len == 0) {
|
||||
caps--, caps->len = 0; // Restart previous cap
|
||||
|
||||
@@ -72,6 +72,20 @@ static void test_match(void) {
|
||||
ASSERT(mg_match(mg_str_n("caabxa", 6), mg_str_n("#aa#bb#", 7), NULL) == 0);
|
||||
ASSERT(mg_match(mg_str_n("a__b_c", 6), mg_str_n("a*b*c", 5), NULL) == 1);
|
||||
|
||||
ASSERT(mg_match(mg_str("a/b/d/c"), mg_str("a/*/c"), NULL) == false);
|
||||
ASSERT(mg_match(mg_str("a/b/c"), mg_str("a/*/c"), NULL) == true);
|
||||
ASSERT(mg_match(mg_str("a/b/d/c"), mg_str("a/#/c"), NULL) == true);
|
||||
{
|
||||
struct mg_str caps[2];
|
||||
ASSERT(mg_match(mg_str("a/b/d/c"), mg_str("a/*/c"), caps) == false);
|
||||
ASSERT(mg_match(mg_str("a/b/c"), mg_str("a/*/c"), caps) == true);
|
||||
ASSERT(mg_strcmp(caps[0], mg_str("b")) == 0);
|
||||
ASSERT(mg_strcmp(caps[1], mg_str("")) == 0);
|
||||
ASSERT(mg_match(mg_str("a/b/d/c"), mg_str("a/#/c"), caps) == true);
|
||||
ASSERT(mg_strcmp(caps[0], mg_str("b/d")) == 0);
|
||||
ASSERT(mg_strcmp(caps[1], mg_str("")) == 0);
|
||||
}
|
||||
|
||||
{
|
||||
char *ae_value = (char *) malloc(1); // Exact size for ASAN
|
||||
ae_value[0] = 'g';
|
||||
|
||||
Reference in new issue
Block a user