summaryrefslogtreecommitdiffhomepage
path: root/src/symbol.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/symbol.c')
-rw-r--r--src/symbol.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/symbol.c b/src/symbol.c
index 0ea99533e..1d2c7c776 100644
--- a/src/symbol.c
+++ b/src/symbol.c
@@ -31,11 +31,13 @@ static const struct {
static mrb_sym
presym_find(const char *name, size_t len)
{
+ if (presym_table[MRB_PRESYM_MAX-1].len < len) return 0;
+
mrb_sym start, idx, presym_size = MRB_PRESYM_MAX;
int cmp;
for (start = 0; presym_size != 0; presym_size/=2) {
idx = start+presym_size/2;
- cmp = (int)(len-presym_table[idx].len);
+ cmp = (int)len-(int)presym_table[idx].len;
if (cmp == 0) {
cmp = memcmp(name, presym_table[idx].name, len);
if (cmp == 0) return idx+1;