diff --git a/src/xcb_errors.c b/src/xcb_errors.c index 428e7be..2eedc34 100644 --- a/src/xcb_errors.c +++ b/src/xcb_errors.c @@ -200,7 +200,8 @@ const char *xcb_errors_get_name_for_core_event(xcb_errors_context_t *ctx, best = current; } - if (best == NULL || best->first_event == 0) { + if (best == NULL || best->first_event == 0 + || event_code - best->first_event >= best->static_info->num_events) { /* Nothing found */ return get_strings_entry(xproto_info.strings_events, event_code); } @@ -237,7 +238,8 @@ const char *xcb_errors_get_name_for_error(xcb_errors_context_t *ctx, best = current; } - if (best == NULL || best->first_error == 0) { + if (best == NULL || best->first_error == 0 + || error_code - best->first_error >= best->static_info->num_errors) { /* Nothing found */ return get_strings_entry(xproto_info.strings_errors, error_code); } diff --git a/tests/test.c b/tests/test.c index 67c01d0..bb7ba75 100644 --- a/tests/test.c +++ b/tests/test.c @@ -347,11 +347,13 @@ static int test_valid_connection(void) err |= check_error(ctx, XCB_IMPLEMENTATION, "Implementation", NULL); err |= check_error(ctx, 18, "Unknown (18)", NULL); err |= check_error(ctx, 127, "Unknown (127)", NULL); + err |= check_error(ctx, 0xff, "Unknown (255)", NULL); err |= check_event(ctx, XCB_KEY_PRESS, "KeyPress", NULL); err |= check_event(ctx, XCB_KEY_RELEASE, "KeyRelease", NULL); err |= check_event(ctx, XCB_GE_GENERIC, "GeGeneric", NULL); err |= check_event(ctx, 36, "Unknown (36)", NULL); + err |= check_event(ctx, 127, "Unknown (127)", NULL); err |= test_randr(c, ctx); err |= test_xinput(c, ctx);