aboutsummaryrefslogtreecommitdiff
path: root/definitions.c
diff options
context:
space:
mode:
authorBruce Hill <bruce@bruce-hill.com>2021-01-17 23:28:19 -0800
committerBruce Hill <bruce@bruce-hill.com>2021-01-17 23:28:19 -0800
commitc577769a89614d41aa58cca9076fd85f727085a6 (patch)
tree4079257369c39a55d0a89475bcf5d7aa73d1ebab /definitions.c
parent379bf1b6c8632d7aa7215b1ef880a89794531ff5 (diff)
Updated REF and CAPTURE types to store direct pointers to names (with a
len size_t) instead of allocating memory.
Diffstat (limited to 'definitions.c')
-rw-r--r--definitions.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/definitions.c b/definitions.c
index a19d3b8..0c99f9b 100644
--- a/definitions.c
+++ b/definitions.c
@@ -55,10 +55,10 @@ def_t *load_grammar(def_t *defs, file_t *f)
//
// Look up a backreference or grammar definition by name
//
-def_t *lookup(def_t *defs, const char *name)
+def_t *lookup(def_t *defs, size_t namelen, const char *name)
{
for ( ; defs; defs = defs->next) {
- if (strlen(name) == defs->namelen && strncmp(defs->name, name, defs->namelen) == 0)
+ if (namelen == defs->namelen && strncmp(defs->name, name, namelen) == 0)
return defs;
}
return NULL;
@@ -67,13 +67,13 @@ def_t *lookup(def_t *defs, const char *name)
//
// Push a backreference onto the backreference stack
//
-def_t *with_backref(def_t *defs, file_t *f, const char *name, match_t *m)
+def_t *with_backref(def_t *defs, file_t *f, size_t namelen, const char *name, match_t *m)
{
pat_t *backref = new_pat(f, m->start, BP_BACKREF);
backref->end = m->end;
backref->len = -1; // TODO: maybe calculate this? (nontrivial because of replacements)
backref->args.backref = m;
- return with_def(defs, strlen(name), name, backref);
+ return with_def(defs, namelen, name, backref);
}
//