diff --git a/src/event.c b/src/event.c index c092f34..7434c07 100644 --- a/src/event.c +++ b/src/event.c @@ -66,11 +66,12 @@ static Object store_event(Table *tp, char *key, int size, Object obj, if ((oldp = table_lookup(tp, key, size)) != 0) ret = get_object(oldp->obj); - if (!Nullp(obj)) + if (!Nullp(obj)) { if (EQ(obj, False)) table_remove(tp, key, size); else table_store(tp, key, size, obj, (unsigned long)flags); + } return ret; } diff --git a/src/insert.c b/src/insert.c index 6acf32b..95d7ff5 100644 --- a/src/insert.c +++ b/src/insert.c @@ -19,11 +19,12 @@ static int cmp(const void *p1, const void *p2) { o1 = *(Object *)p1, s1 = STRING(Car(o1)); o2 = *(Object *)p2, s2 = STRING(Car(o2)); if ((tmp = memcmp(s1->data, s2->data, - s1->size < s2->size ? s1->size : s2->size)) == 0) + s1->size < s2->size ? s1->size : s2->size)) == 0) { if (s1->size == s2->size) return Get_Integer(Car(Cdr(o1))) - Get_Integer(Car(Cdr(o2))); else return s1->size - s2->size; + } return tmp; } diff --git a/src/prim.c b/src/prim.c index 917d49f..cd1337c 100644 --- a/src/prim.c +++ b/src/prim.c @@ -239,10 +239,12 @@ static Object p_skip_group(void) { warn("end-of-scream while skipping requests"); break; } - for (p = ip->data, ep = p + ip->size; p < ep-2; p++) - if (*p == escape) + for (p = ip->data, ep = p + ip->size; p < ep-2; p++) { + if (*p == escape) { if (*++p == '{') level++; else if (*p == '}') level--; + } + } buffer_clear(ip); } while (level > 0); buffer_delete(ip);