13
13
14
14
#include "config.h"
15
15
16
+ #include <assert.h>
17
+ #include <stdint.h>
18
+
16
19
#include "keymap.h"
17
20
#include "text.h"
18
21
@@ -35,7 +38,7 @@ xkb_keymap_unref(struct xkb_keymap *keymap)
35
38
if (key -> groups ) {
36
39
for (unsigned i = 0 ; i < key -> num_groups ; i ++ ) {
37
40
if (key -> groups [i ].levels ) {
38
- for (unsigned j = 0 ; j < XkbKeyNumLevels (key , i ); j ++ ) {
41
+ for (xkb_level_index_t j = 0 ; j < XkbKeyNumLevels (key , i ); j ++ ) {
39
42
if (key -> groups [i ].levels [j ].num_syms > 1 )
40
43
free (key -> groups [i ].levels [j ].s .syms );
41
44
if (key -> groups [i ].levels [j ].num_actions > 1 )
@@ -336,7 +339,8 @@ xkb_keymap_num_levels_for_key(struct xkb_keymap *keymap, xkb_keycode_t kc,
336
339
if (!key )
337
340
return 0 ;
338
341
339
- layout = XkbWrapGroupIntoRange (layout , key -> num_groups ,
342
+ static_assert (XKB_MAX_GROUPS < INT32_MAX , "Max groups don't fit" );
343
+ layout = XkbWrapGroupIntoRange ((int32_t ) layout , key -> num_groups ,
340
344
key -> out_of_range_group_action ,
341
345
key -> out_of_range_group_number );
342
346
if (layout == XKB_LAYOUT_INVALID )
@@ -398,7 +402,8 @@ xkb_keymap_key_get_mods_for_level(struct xkb_keymap *keymap,
398
402
if (!key )
399
403
return 0 ;
400
404
401
- layout = XkbWrapGroupIntoRange (layout , key -> num_groups ,
405
+ static_assert (XKB_MAX_GROUPS < INT32_MAX , "Max groups don't fit" );
406
+ layout = XkbWrapGroupIntoRange ((int32_t ) layout , key -> num_groups ,
402
407
key -> out_of_range_group_action ,
403
408
key -> out_of_range_group_number );
404
409
if (layout == XKB_LAYOUT_INVALID )
@@ -461,7 +466,8 @@ xkb_keymap_key_get_syms_by_level(struct xkb_keymap *keymap,
461
466
if (!key )
462
467
goto err ;
463
468
464
- layout = XkbWrapGroupIntoRange (layout , key -> num_groups ,
469
+ static_assert (XKB_MAX_GROUPS < INT32_MAX , "Max groups don't fit" );
470
+ layout = XkbWrapGroupIntoRange ((int32_t ) layout , key -> num_groups ,
465
471
key -> out_of_range_group_action ,
466
472
key -> out_of_range_group_number );
467
473
if (layout == XKB_LAYOUT_INVALID )
0 commit comments