diff options
| author | Quentin Young <qlyoung@nvidia.com> | 2020-11-29 01:59:02 -0500 |
|---|---|---|
| committer | Quentin Young <qlyoung@nvidia.com> | 2020-12-01 18:37:14 -0500 |
| commit | 923431ef80fc92b313d812605764b005397fa9bb (patch) | |
| tree | e67c3197ece1861219ed365579bbbf3e49ce23ee /lib/frrscript.c | |
| parent | a3ce06c40b0fc8f7ec695393d099f2ed35a5c8fd (diff) | |
lib: fix hash issues in scripting foo
Signed-off-by: Quentin Young <qlyoung@nvidia.com>
Diffstat (limited to 'lib/frrscript.c')
| -rw-r--r-- | lib/frrscript.c | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/lib/frrscript.c b/lib/frrscript.c index 246ae25fd7..e7390a8d94 100644 --- a/lib/frrscript.c +++ b/lib/frrscript.c @@ -44,7 +44,10 @@ static unsigned int encoder_hash_key(const void *data) static bool encoder_hash_cmp(const void *d1, const void *d2) { - return !strcmp(d1, d2); + const struct encoder *e1 = d1; + const struct encoder *e2 = d2; + + return strmatch(e1->typename, e2->typename); } static void *encoder_alloc(void *arg) @@ -53,6 +56,7 @@ static void *encoder_alloc(void *arg) struct encoder *e = XCALLOC(MTYPE_TMP, sizeof(struct encoder)); e->typename = XSTRDUP(MTYPE_TMP, tmp->typename); + e->encoder = tmp->encoder; return e; } @@ -81,20 +85,16 @@ int frrscript_lua_call(struct frrscript *fs, ...) return ret; } -void frrscript_register_type_encoder(const char *typename, - encoder_func encoder) +void frrscript_register_type_encoder(const char *typename, encoder_func encoder) { - struct encoder e = { - .typename = (char *) typename, - .encoder = NULL - }; + struct encoder e = {.typename = (char *)typename, .encoder = encoder}; if (hash_lookup(encoder_hash, &e)) { zlog_backtrace(LOG_ERR); assert(!"Type encoder double-registered."); } - hash_get(encoder_hash, &e, encoder_alloc); + assert(hash_get(encoder_hash, &e, encoder_alloc)); } |
