From 39c0c93615adc0b57b90902c12bd1b711f1c62d0 Mon Sep 17 00:00:00 2001 From: terminx Date: Sun, 7 Oct 2018 05:20:47 +0000 Subject: [PATCH] Slightly increase efficiency of osd_findsymbol() (this is the slow one that has to handle partial matches) git-svn-id: https://svn.eduke32.com/eduke32@7008 1a8010ca-5511-0410-912e-c29ae57300e0 --- source/build/src/osd.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/source/build/src/osd.cpp b/source/build/src/osd.cpp index 1098cc171..b4a18e098 100644 --- a/source/build/src/osd.cpp +++ b/source/build/src/osd.cpp @@ -1736,7 +1736,7 @@ static char *strtoken(char *s, char **ptrptr, int32_t *restart) if (!p) return NULL; // eat up any leading whitespace - while (*p != 0 && *p != ';' && *p == ' ') p++; + while (*p && *p == ' ') p++; // a semicolon is an end of statement delimiter like a \0 is, so we signal // the caller to 'restart' for the rest of the string pointed at by *ptrptr @@ -1985,13 +1985,15 @@ static osdsymbol_t *osd_addsymbol(const char *pszName) // // findsymbol() -- Finds a symbol, possibly partially named // -static osdsymbol_t * osd_findsymbol(const char *pszName, osdsymbol_t *pSymbol) +static osdsymbol_t * osd_findsymbol(const char * const pszName, osdsymbol_t *pSymbol) { if (!pSymbol) pSymbol = symbols; if (!pSymbol) return NULL; + int const nameLen = Bstrlen(pszName); + for (; pSymbol; pSymbol=pSymbol->next) - if (pSymbol->func != OSD_UNALIASED && !Bstrncasecmp(pszName, pSymbol->name, Bstrlen(pszName))) return pSymbol; + if (pSymbol->func != OSD_UNALIASED && !Bstrncasecmp(pszName, pSymbol->name, nameLen)) return pSymbol; return NULL; }