src


Log

Author Commit Date CI Message
Ran Benita 47f45194 2017-12-12T15:44:52 compose/parser: be more careful when checking if sequence overrides or duplicates another Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita 2963e29f 2017-12-12T14:43:24 xkbcomp/ast-build: fix memory leak when appending multi-keysyms `syms` was not freed. Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita 26453b84 2017-12-12T14:30:21 keymap: fix NULL dereference when dumping the default fallback type The default fallback type uses type->level_names = NULL but the keymap-dump code was not checking this case. Instead of adding more workarounds and possible bugs (e.g. previous commit), let's just keep the number of level names separately. This has the additional advantage retains extraneous level name if someone adds them for some reason. Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita 9f85d6b7 2017-12-12T14:02:17 xkbcomp/types: fix types being assigned the wrong number of levels in some circumstances The buggy code assigned the number of levels based on the number of level names in the definition, instead of the actual number of levels! This would completely break type definitions which do not give names to levels. This was not noticed for so long because xkeyboard-config always gives names to all levels. This regressed in 61fed8dab9b8e27981f36ffc96666d7376546e30. Reported-by: Gatis Paeglis <gatis.paeglis@qt.io> Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita 18d6aebe 2017-12-11T22:41:55 keysym: add xkb_keysym_to_{lower,upper} to public API These can be useful in some odd cases. There is already an implementation (+ tests) for internal use, so all that's needed is to export them. If xkbcommon were to provide a way to convert a Unicode codepoint to a keysym, this could have been implemented externally as follows: uint32_t codepoint = xkb_keysym_to_utf32(keysym); uint32_t upper_codepoint = my_unicode_library_to_upper(codepoint); xkb_keysym_t upper_keysym = theoretical_xkb_keysym_from_utf32(upper_codepoint); However keysym -> codepoint is not injective so such a function is not possible strictly speaking. Signed-off-by: Ran Benita <ran234@gmail.com>
Matt Whitlock 0db1d313 2017-09-28T21:31:28 keysym-utf: Add missing codes for signifblank and permille keysyms
Ran Benita 41f10188 2017-09-08T12:16:13 expr: paper over a maybe-uninitialized warning Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita 993f4837 2017-07-31T18:16:37 build: fix out-of-tree build The change in d44ba48 removed -I$(top_builddir)/src/xkbcomp, but this is needed in order to find the generated parser.h file which is put in the build dir. I also added -I$(top_builddir)/src in order to match the meson behavior. Fixes https://github.com/xkbcommon/libxkbcommon/issues/50 Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita daebdb5e 2017-07-31T10:18:54 x11/keymap,test/interactive-evdev: fix a couple of clang-analyzer warnings From my analysis these values cannot be null, but the analyzer cannot see this. So assert it. Signed-off-by: Ran Benita <ran234@gmail.com>
Hans de Goede 939d0909 2017-05-10T14:46:03 Sync Keysyms with recent xproto additions xproto recently has been extended with 4 new keysyms: XF86XK_Keyboard XF86XK_WWAN XF86XK_RFKill XF86XK_AudioPreset This commit is the result of running "make update-keysyms" on a system with the updated xproto installed. Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Ran Benita 6b57344c 2017-04-27T20:06:21 state: cure boolean blindness in the filter functions' result Makes it a little easier to understand the filters. Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita 927fd8f8 2017-04-27T19:17:53 state: remove unneeded NULL check xkb_filter_new() cannot return NULL. Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita d44c3ab2 2017-04-27T19:14:56 state: reorder new() functions before the set() functions in the code So that they may be read more naturally in chronological order. Signed-off-by: Ran Benita <ran234@gmail.com>
Daniel Stone ce38f96e 2017-04-11T15:09:23 Add explicit fallthrough case statements When we fall through to another label in a case, add an explicit comment noting so, to quiet GCC 7's warnings. Signed-off-by: Daniel Stone <daniels@collabora.com>
Ran Benita 1ec14d09 2016-12-02T22:46:53 compose: remove the keysym_from_name cache The hit rate is high, but either the cache is slow or the function is not fast enough -- the cache no longer holds its weight, leading only to very modest improvements. If it's the former, it can definitely be improved, the code is very dumb (though it worked just as well as any other I tried back then). But instead, let's just kill it. Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita b5586a6c 2016-12-02T22:15:19 keysym: fix locale dependence in xkb_keysym_from_name() We currently use strcasecmp, which is locale-dependent. In particular, one well-known surprise even if restricted just ASCII input is found in the tr_TR (Turkish) locale, see e.g. https://msdn.microsoft.com/en-us/library/ms973919.aspx#stringsinnet20_topic5 We have known to avoid locale-dependent functions before, but in this case, we forgot. Fix it by implementing our own simple ASCII-only strcasecmp/strncasecmp. Might have been possible to use strcasecmp_l() with the C locale, but went the easy route. Side advantage is that even this non-optimized version is faster than the optimized libc one (__strcasecmp_l_sse42) since it doesn't need to do the locale stuff. xkb_keysym_from_name(), which uses strcasecmp heavily, becomes faster, and so for example Compose file parsing, which uses xkb_keysym_from_name() heavily, becomes ~20% faster. Resolves https://github.com/xkbcommon/libxkbcommon/issues/42 Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita 327364d2 2016-11-14T17:37:35 utils: rename popcount to avoid conflict in NetBSD Resolves https://github.com/xkbcommon/libxkbcommon/issues/41 Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita babc9e0c 2016-02-27T22:31:16 state: add GTK consumed modifiers mode This is more or less what is implemented here: https://git.gnome.org/browse/gtk+/tree/gdk/x11/gdkkeys-x11.c?h=3.19.10#n1131 The implementation here is more technically correct but should provide the same results. Try it out with ./test/interactive-evdev -g (modifiers prefixed with "-" are consumed). https://bugzilla.gnome.org/show_bug.cgi?id=754110 https://github.com/xkbcommon/libxkbcommon/issues/17 Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita a0a41332 2016-02-27T19:06:14 state: allow different modes for calculating consumed modifiers The current functions dealing with consumed modifiers use the traditional XKB definition of consumed modifiers (see description in the added documentation). However, for several users of the library (e.g. GTK) this definition is unsuitable or too eager. This is exacerbated by some less-than-ideal xkeyboard-config type definitions (CTRL+ALT seems to cause most grief...). So, because we - want to enable alternative interpretations, but - don't want to expose too much internal details, and - want to keep things simple for all library users, we add a high-level "mode" parameter which selects the desired interpretation. New ones can be added as long as they make some sense. All of the old consumed-modifiers functions keep using the traditional ("XKB") mode. I mark xkb_state_mod_mask_remove_consumed() and as deprecated without adding a *2 variant because I don't it is very useful (or used) in practice. Alternative modes are added in subsequent commits (this commit only adds a mode for the existing behavior). https://github.com/xkbcommon/libxkbcommon/issues/17 Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita 90611719 2016-02-27T22:29:57 utils: add popcount function Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita 0dd610fb 2016-06-09T16:32:05 keymap-dump: use consistent order set/latch/lock (style) Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita c8e6996f 2016-06-09T15:30:21 src/state: match_mod_masks can return bool instead of int Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita 763e2b7e 2016-03-13T20:24:44 src/utils: check if fileno() failed in map_file fileno() can fail, if called on e.g. fmemopen() FILEs which are not backed by a file descriptor. This functions uses mmap to map the entire file to memory, so using such FILEs will not work. (There is actually no change of behavior here, since the following fstat would have already failed with EBADF. But lets make it clear.) Another possibility is to fall back to the !HAVE_MMAP case; but it sounds like a better idea to leave it to the programmer to use the new_from_string/new_from_buffer functions instead, instead of doing double allocation behind their back. Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita 39082082 2016-02-28T00:33:19 keymap: share LevelsSameSyms() The function is generic enough. Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita c8a25645 2016-02-28T00:02:05 state: factor out get_entry_for_mods() Will be useful later. Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita 9f5139b5 2016-02-27T19:43:07 state: factor out entry_is_active() check Makes the code slightly cleaner and I plan to use the function in another place. Signed-off-by: Ran Benita <ran234@gmail.com>
Mike Blumenkrantz 0ce17ef3 2016-01-20T11:40:43 keymap: add xkb_keymap_key_by_name(), xkb_keymap_key_get_name(), tests xkb_keymap_key_by_name() allows finding a keycode from a given keyname and is useful for generating keyboard events to use in regression tests during CI xkb_keymap_key_get_name() is the inverse of xkb_keymap_key_by_name() Signed-off-by: Mike Blumenkrantz <zmike@osg.samsung.com> [ran: some stylistic tweaks + another test case] Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita 2cca0289 2015-11-19T00:44:27 src/utils: change map_file to not take const string argument map_file() uses PROT_READ, so const seems fitting; however unmap_file calls munmap/free, which do not take const, so an UNCONSTIFY is needed. To avoid the UNCONSTIFY hack, which is likely undefined behavior or some such, just remove the const. Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita c7e2e6d7 2015-10-26T21:57:39 keymap: fix outdated comment See 725ae134d434bab6c999121d55dbc3582c4acb65. Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita 13d23259 2015-09-07T14:45:09 state: reduce scope of fake action Also rename to "dummy" as I think it is a nicer name. Signed-off-by: Ran Benita <ran234@gmail.com>
Michael Vogt 7ea129fb 2015-07-17T20:59:52 Add XKB_CONFIG_ROOT environment The XKB_CONFIG_ROOT environment allows overrding the build time DFLT_XKB_CONFIG_ROOT path.
Ran Benita 8e1fed6c 2015-03-24T16:40:29 compose: correctly parse modifier syntax As described in: http://cgit.freedesktop.org/xorg/lib/libX11/commit/?id=ddf3b09bb262d01b56fbaade421ac85b0e60a69f Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita 91620179 2014-10-23T21:03:13 keycodes: use correct printf format Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita c03834a1 2014-10-23T21:00:20 Reduce variable scopes Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita 5e3615b2 2014-10-18T20:04:57 ast-build: remove log message about allocation failure We don't do so anywhere else, so until we have something comprehensive, let's not so here. Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita 4a660d7f 2014-10-18T19:47:19 xkbcomp: remove file->topName It is useless. Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita 96a29ede 2014-10-18T19:22:56 xkbcomp/keymap: remove useless free() Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita f774f819 2014-10-18T13:23:53 Replace some strncmp's with memcmp Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita a4cc119b 2014-10-18T12:36:40 compose/parser: save len in keysym_from_name cache This reduces a lot of strcmp's, and allows to use a faster memcmp. Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita 30e7445d 2014-10-17T00:41:05 state: correctly infer inactive type entries The current test is incorrect, since 'map[None]' is entirely valid. In most cases this doesn't cause any problems, since the default fallback is Level1, and it's almost always 'map[None] = Level1' anyway. But in one case in xkeyboard-config it isn't, in types/numpad(mac): type "KEYPAD" { modifiers = None; map[None] = Level2; level_name[Level2] = "Number"; }; So before checking if no modifiers were mapped, make sure there *were* any modifiers at all. https://bugs.freedesktop.org/show_bug.cgi?id=85092 Reported-by: Gatis Paeglis <gatis.paeglis@digia.com> Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita a4c667ad 2014-10-17T00:13:48 symbols: don't warn about conflicting syms if they are the same Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita 2e5530ad 2014-10-16T18:51:51 parser: bring back warning about includes of files with no default Using the same format as xkbcomp. Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita c6e63fd7 2014-10-14T11:28:17 compose/parser: fix parsing of multiple modifiers Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita d1c5dd14 2014-10-13T18:19:16 compose/parser: parse (! mods) properly We don't actually do anything with them. But if someone uses them we can at least not choke. Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita 3c0c3afa 2014-10-13T15:47:13 compose/parser: resolve keysyms in parser instead of scanner It will become context-sensitive. Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita 0b99c63c 2014-10-13T15:05:48 compose/parser: use parameter as intended Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita 8bba4b34 2014-10-13T00:16:59 compose/parser: one more skip_to_eol() Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita a3116f97 2014-10-13T18:51:12 compose/parser: fix segfault when including The keysym cache for the new scanner was not initialized. To avoid such errors also in the future, require passing the priv argument in scanner_init(), instead of initializing it separately. Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita 65c355aa 2014-10-13T14:28:27 COPYING: add copyright notice from libX11:modules/im/ximcp/imLcPrs.c We have used some portions of it, so add the notice. Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita 8a0acf2c 2014-10-07T23:42:08 scanner-utils: optimize one-line comments Compose files have a lot of those. Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita edc98b54 2014-09-12T18:44:30 compose: add xkbcommon-compose - implementation Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita 29a1a780 2014-09-12T18:40:18 scanner-utils: add priv member For when a user of the scanner wants to pass something along with it. Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita e8b11232 2014-09-12T00:31:40 darray: add darray_shrink() If we have a big array which can be finalized, on average we can give back 1/4 of its size, which the allocator might be able to use. Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita b3f23965 2014-02-06T01:48:32 keysym: add function to test if a keysym is for a modifier Needed for compose. Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita 94a8e01c 2014-02-03T14:55:37 scanner-utils: add helper for appending an entire string Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita 8eb024d5 2013-10-27T20:17:29 scanner-utils: add helper for hex string escape Like the already existing oct. Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita 4ed68120 2014-10-01T19:14:36 scanner-utils: optimize str()/lit() Replace the dog-slow unneeded strncasecmp() with an inlineable memcmp(). Before: compiled 2500 keymaps in 8.348715629s After: compiled 2500 keymaps in 7.872640338s Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita 725ae134 2014-09-25T22:01:17 keymap: rename XkbKeyGroupWidth to XkbKeyNumLevels The "width" terminology comes from the group*width+level layout of the keysyms in a key, as used in the old implementations. We don't keep all the keysyms of a key in one array so change it to a more accurate name. Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita 2c259f17 2014-09-25T21:55:52 symbols: improve FindKeyForSymbol() A bit more involved, but can short circuit. Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita 485b736f 2014-09-25T21:25:39 symbols: use correct max value xkb_level_index_t was initially uint16_t, now it's 32. Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita 68962aa1 2014-09-21T23:54:34 keymap-dump: combine modifier_map's with the same modifier A bit less efficient, but makes for shorter, nicer output. Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita 0224283f 2014-09-21T17:09:58 rules: fix mlvo-not-used warning An mlvo can also be used in an expansion, but we didn't mark them in this case in commit d8a4f52cb95d989b4. This caused wrongful warnings on something like -l ch -v fr -- the `fr` is only added via expansion. Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita d8a4f52c 2014-09-20T16:13:24 rules: warn when an RMLVO component isn't used Due to wildcard matches in the rules file, this is only really useful for misspelled or missing options, e.g. $ ./test/rmlvo-to-kccgst -o comprose:ralt > /dev/null xkbcommon: ERROR: Unrecognized RMLVO option "comprose:ralt" was ignored Although it is more of a warning, it indicates a misconfiguration which the user probably wants to see. Therefore the log level is ERROR. Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita d0c6fce2 2014-09-20T15:06:13 parser: use "atom" instead of "sval" in yylval "sval" is already used for "struct sval". Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita 1054962d 2014-09-11T02:55:51 symbols: use darray_foreach_from for nicer loop Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita f03dcf9f 2014-09-10T19:11:41 Remove compatibility symbols Remove the deprecated symbols that were used for ABI compatibility during the transition period to the first stable version, 0.2.0. The old *names* can still be used, programs which use the old names will continue to work, as long as they were compiled against a stable version (as they have been #defined to the new names from the start; see xkbcommon/xkbcommon-compat.h). Namely, this will break binaries which: 1. Were compiled against a pre-stable version of libxkbcommon, and 2. Are linked against the next version of libxkbcommon, and 3. Expect to work. This scenario is very unlikely, and will break in many other ways anyway. Also, retaining support for these means including them in the new symbol version file, which I would like to avoid. Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita a931740c 2014-09-10T13:29:52 keycodes: fix keymap compilation with no aliases and malloc(0)==NULL If the keymap doesn't have any key-aliases (which is certainly possible), the calloc(num_key_aliases, ...) is allowed to return NULL according to the C standard, but this is not an error. Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita 7a87c202 2014-09-10T13:10:33 ast-build: fix leak in error path Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita a1f0595a 2014-08-18T20:27:07 state: make sure the mods are fully resolved after xkb_state_update_mask() Virtual modifiers can have "mappings" to real modifiers, e.g. NumLock may also set Mod2. In a normal turn of events, the various components (depressed, latched, locked, and consequently effective) include the mapped mods, because the masks are pre-resolved everywhere. However, xkb_state_update_mask() accepts arbitrary mod masks, which may not be resolved (if it comes from somewhere other than xkb_state_serialize_mods()). So let's always resolve them ourselves. Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita 99184f16 2012-11-24T13:29:54 Make the effective mod mask calculation available to other files We will want to use that function in state.c as well. Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita 80ae8e61 2014-08-18T20:08:25 state: no need for loop in xkb_state_update_mask() Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita 56de0115 2014-08-09T22:41:01 x11/keymap: handle private actions Previously we treated them as NoAction(). Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita ead816e5 2014-08-09T22:35:24 utils: add a STATIC_ASSERT macro It'd be nicer to use C11's static_assert(), but it's easier to roll our own C99 version using a trick I saw in xv6. Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita d38ff018 2014-08-09T22:19:39 keymap: remove "flags" field of xkb_private_action Private actions have no flags - only serialized data. Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita f00e779a 2014-08-08T17:21:28 x11/keymap: be more defensive about the number of modifiers There can be at most 16 vmods, and we rely on the facts that #vmods + NUM_REAL_MODS (8) <= XKB_MAX_MODS (32) when accessing keymap->mods.mods. But msb_pos() can potentially return up to #vmods = 32 if the server is malicious, so we need to truncate it. Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita 01753c04 2014-08-08T16:36:42 x11/keymap: don't forget to add the vmod offset in get_vmods The first 8 modifiers in keymap->mods are the real modifiers; the virtual modifiers are then at slots 8-24. But XkbGetMap's virtualMods mask starts the virtual modifiers at zero, so we need to add an offset (like we do correctly in get_vmod_names()). https://github.com/xkbcommon/libxkbcommon/issues/9 Reported-by: @rtcm Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita 40f109af 2014-07-27T14:24:20 ast-build: make sure InterpDef is freeable With the following two rules: InterpretDecl : INTERPRET InterpretMatch OBRACE VarDeclList CBRACE SEMI { $2->def = $4; $$ = $2; } ; InterpretMatch : KeySym PLUS Expr { $$ = InterpCreate($1, $3); } | KeySym { $$ = InterpCreate($1, NULL); } ; And the fact that InterpCreate doesn't initialize ->def, if the VarDeclList fails, the %destructor tries to recursively free the uninitialized ->def VarDef. So always initialize it. That was the only problematic code in the parser for %destructor (I'm pretty sure). Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita 37cf20c9 2014-07-26T22:49:30 parser: silence bison "unused value" warnings Previous commit triggered these for some reason: /home/ran/src/libxkbcommon/src/xkbcomp/parser.y:555.25-33: warning: unused value: $1 [-Wother] CoordList : CoordList COMMA Coord ^^^^^^^^^ Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita 7ec00933 2014-07-26T22:34:05 parser: don't leak AST nodes for discarded symbols If the parser has symbols on the stack, and then enters an error, it discards the symbols and fails. But their actions which allocate AST nodes had already ran. So we must free these to avoid leaks. We use %destructor declarations, see http://www.gnu.org/software/bison/manual/html_node/Destructor-Decl.html Note: byacc only supports %destructor when compiled with --enable-btyacc. Also, it doesn't support using the parse-param in the destructor. So we might revert this commit before the next release, or forget about byacc. https://github.com/xkbcommon/libxkbcommon/issues/8 Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita 61fed8da 2014-07-26T00:19:34 Replace darray_mem with a new darray_steal That's a more declarative interface. Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita fbd92860 2014-07-26T00:13:54 ast-build: use cast instead of ->common Missed in 1b2bb204e0baa2246a6232aea762c1edb00cd44a. Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita 5f5b960c 2014-07-25T23:40:40 types: refactor CopyKeyTypesToKeymap So it's OOM-safe and doesn't clobber keymap on failure. Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita 320e5ffa 2014-07-25T23:24:46 keycodes: split CopyKeyInfoToKeymap to several functions It's a bit easier to read and self-documenting. Also handles OOM better. Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita cb4bae71 2014-06-30T14:52:30 parser: don't shadow "str" It's a name of a function in scanner-utils.h and also of some parameters. https://bugs.freedesktop.org/show_bug.cgi?id=79898 Reported-by: Bryce Harrington <b.harrington@samsung.com> Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita 9c30d6da 2014-06-15T15:30:51 x11: don't iterate on empty batches If count % SIZE == 0 we did a useless iteration where start==stop. It's harmless but strange, so don't do that. Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita 67d884ec 2014-06-01T15:24:10 Remove unnecessary !!(expressions) _Bool already does that. Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita d6f2d8ec 2014-05-28T20:32:16 rules: fix leak on failure matcher_match() builds up the kccgst's, and we steal the memory on success. But on error we didn't free it. Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita e3f751be 2014-05-14T11:44:29 x11: fix out-of-bounds access in adopt_atoms() error handling Two problems: - `j` can be >= `SIZE`, and needs to be wrapped like in the rest of the code. - `cookies[j % SIZE]` is not initialized if there's no atom in `from[j]`. The is manifested when: - We've already gone through one batch (>= 128 atoms) (in fact this cannot happen in call to `adopt_atoms` in the current code). - An XCB request failed in the middle of a batch. Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita 86cfef63 2014-05-11T09:47:56 ast-build: don't leak on OOM in BoolVarCreate Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita 2e561c3f 2014-04-30T08:57:16 parser: show the keysym in "unrecognized keysym" messages Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita 67323f41 2014-04-25T01:14:31 keycodes: fix uninitialized variable Happened in one of the previous commits. For some reason, gcc doesn't warn about this, but clang does... Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita 07fb6a6c 2014-04-22T18:18:13 xkbcomp: don't align enum values Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita 28a22ba2 2014-04-22T18:05:24 xkbcomp: use straight assignment instead of CopyModSet Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita 9014cf8c 2014-04-22T13:15:21 keymap, keycodes, compat: don't use darray for LEDs Use a static array of size XKB_MAX_LEDS instead, as in xkb_mod_set. Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita 787faf36 2014-04-22T12:23:36 keymap: don't use darray in xkb_mod_set Instead just statically allocate the mods array (of size MAX_MOD_SIZE = 32). The limit is not going anywhere, and static allocations are nicer (nicer code, no OOM, etc.). It's also small and dense enough. Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita 6b1cdee1 2014-04-22T11:47:23 keymap: add and use xkb_mods_{foreach,enumerate}() To iterate over an xkb_mod_set. Slightly nicer interface and makes transitioning from darray easier. Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita 0f6bca2b 2014-04-22T11:33:47 keymap: rename xkb_foreach_key to xkb_keys_foreach We'll use the format xkb_foos_foreach and xkb_foos_enumerate for the various iterators. Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita 9b1a68ec 2014-04-22T11:22:22 keymap: protect xkb_foreach_key macro params Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita decb2915 2014-04-22T12:29:22 darray: remove unused darray_foreach_reverse() Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita 00f084b6 2014-04-22T14:34:57 utils: detect overflow in memdup() Signed-off-by: Ran Benita <ran234@gmail.com>