On Tue, Sep 23, 2014 at 10:51 AM, George Joseph <george.jos...@fairview5.com > wrote:
> On Tue, Sep 23, 2014 at 9:45 AM, George Joseph < > george.jos...@fairview5.com> wrote: > >> I've been working on some changes for config.c and in the process I've >> found 5 instances of someone attempting to do "cat->name == category_name" >> instead of "strcmp(cat->name, category_name)". Example: >> >> /* try exact match first, then case-insensitive match */ >> for (cat = config->root; cat; cat = cat->next) { >> if (cat->name == category_name && (ignored || !cat->ignored)) >> return cat; >> } >> >> for (cat = config->root; cat; cat = cat->next) { >> if (!strcasecmp(cat->name, category_name) && (ignored || !cat->ignored)) >> return cat; >> } >> >> The result is that the case sensitive match never succeeds and it's >> always the case insensitive match that's run. >> >> My question is... Should I fix these so the case sensitive match works >> and runs first or just remove the first loop so the match is always >> case-insensitive? I'm hoping the latter not only because it makes the >> code simpler but because that's how it's worked for years and suddenly >> making the match case sensitive might cause unexpected problems. >> >> Thoughts? >> >> Forgot to mention...There are other places in the code where the > comparison is always case-insensitive. > I was under the impression that the code was done this way initially to avoid doing a string comparison. Though, I'm not sure avoiding the string comparison really buys much in the way of performance anyway. Another reason is if you have several sections named [foo] and you need to resume with the same [foo] section as last time. Richard
-- _____________________________________________________________________ -- Bandwidth and Colocation Provided by http://www.api-digital.com -- asterisk-dev mailing list To UNSUBSCRIBE or update options visit: http://lists.digium.com/mailman/listinfo/asterisk-dev