mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2025-02-27 16:11:03 +00:00
MINOR: pattern: new sflag PAT_SF_REGFREE indicates regex_free() is needed
Currently we have no way to know how to delete/prune a pattern in a generic way. A pattern doesn't contain its own type so we don't know what function to call. Tree nodes are roughly OK but not lists where regex are possible. Let's add one new bit for sflags at index time to indicate that regex_free() will be needed upon deletion. It's not used for now.
This commit is contained in:
parent
d4164dcd4a
commit
9b5c8bbc89
@ -69,6 +69,7 @@ enum {
|
||||
/* possible flags for patterns storage */
|
||||
enum {
|
||||
PAT_SF_TREE = 1 << 0, /* some patterns are arranged in a tree */
|
||||
PAT_SF_REGFREE = 1 << 1, /* run regex_free() on the pointer */
|
||||
};
|
||||
|
||||
/* ACL match methods */
|
||||
|
@ -1240,6 +1240,7 @@ int pat_idx_list_reg_cap(struct pattern_expr *expr, struct pattern *pat, int cap
|
||||
memcpy(&patl->pat, pat, sizeof(*pat));
|
||||
|
||||
/* compile regex */
|
||||
patl->pat.sflags |= PAT_SF_REGFREE;
|
||||
if (!(patl->pat.ptr.reg = regex_comp(pat->ptr.str, !(expr->mflags & PAT_MF_IGNORE_CASE),
|
||||
cap, err))) {
|
||||
free(patl);
|
||||
|
Loading…
Reference in New Issue
Block a user