Merge pull request #1 from EvilPudding/master

Optimized find_function and find_var.
This commit is contained in:
Lewis Van Winkle
2016-02-23 10:59:14 -06:00

View File

@@ -99,7 +99,7 @@ static const builtin *find_function(const char *name, int len) {
while (imax >= imin) { while (imax >= imin) {
const int i = (imin + ((imax-imin)/2)); const int i = (imin + ((imax-imin)/2));
int c = strncmp(name, functions[i].name, len); int c = strncmp(name, functions[i].name, len);
if (!c) c = len - strlen(functions[i].name); if (!c) c = '\0' - functions[i].name[len];
if (c == 0) { if (c == 0) {
return functions + i; return functions + i;
} else if (c > 0) { } else if (c > 0) {
@@ -117,7 +117,7 @@ static const double *find_var(const state *s, const char *name, int len) {
int i; int i;
if (!s->lookup) return 0; if (!s->lookup) return 0;
for (i = 0; i < s->lookup_len; ++i) { for (i = 0; i < s->lookup_len; ++i) {
if (strlen(s->lookup[i].name) == len && strncmp(name, s->lookup[i].name, len) == 0) { if (strncmp(name, s->lookup[i].name, len) == 0 && s->lookup[i].name[len] == '\0') {
return s->lookup[i].value; return s->lookup[i].value;
} }
} }