GitHub PushEvent at 2014-11-17 11:23:46
Repository: neovim
Actor: elmart
Payload: {"shas":[["e1e3edf9d41f82210edd852e0c98e48c3b0cbd73","51eddee2b130f008a314b7c0a50baedcf3c23abf@mykolab.com","farsi.c: Misc. fixes\n\n- Converted some functions to return bools, and changed their respective\n  comments to reflect that.\n- Minor fixes to a few comments","Michael Reed",true],["e5a08e783796c25b15653e5b3b4d540d3268dfcd","51eddee2b130f008a314b7c0a50baedcf3c23abf@mykolab.com","arabic.c: Comment fixes\n\n- Use C99 style comments everywhere\n- Fix incorrect references to return values","Michael Reed",true],["e1757513649c016ff7d2e03f11ec8017fe290597","b8ecd6b45b1aabf66da0027f0b3f2a1d9a863448@gmail.com","coverity/13765,13766,13767,13768: Fix memory leaks in hardcopy.c\n\nThe function mch_print_begin() returns early in case of an\nerror, but without freeing allocated memory.\nTo fix this, use stack allocation instead of heap allocation\nfor the variables res_prolog, res_encoding, res_cidfont and\nres_cmap.","oni-link",true],["75335f01a065c55c3b07f849bf231a3805cb708d","73262ad0334ab37227b2f7a0205f51db1e606681@fwalch.com","Travis: Remove Coverity build.\n\nCoverity is now handled by neovim/bot-ci.","Florian Walch",true],["0fcb867981463372675f3dd31d5753123f1bfa54","224e6c20330e5fdd86c45c03a865a241c1b7bd00@gmail.com","Merge pull request #1479 from Pyrohh/fix_comments_and_use_stdbool\n\n{farsi.c,arabic.c}: Fix comments and use stdbool","Justin M. Keyes",true],["75f4451d570deef2127913d554de0d6e1a9c8f47","224e6c20330e5fdd86c45c03a865a241c1b7bd00@gmail.com","Merge pull request #1483 from oni-link/fix.mch_print_begin.memory.leak.stackversion\n\ncoverity/13765,13766,13767,13768: Fix memory leaks in hardcopy.c","Justin M. Keyes",true],["cdf85dcc12bf227b5f4831b2b58c0b11f743aedf","224e6c20330e5fdd86c45c03a865a241c1b7bd00@gmail.com","Merge pull request #1157 from fwalch/remove-coverity\n\nTravis: Remove Coverity build.","Justin M. Keyes",true],["10a5170ae3ced69afc2b94136a99d0b7c00df343","5c31185ebcdcfd329397d45474b62c2634b88685@gmail.com","Fix warnings: tag.c: test_for_static()/get_tags(): Various (2): FP.\n\nProblems   : Assigned value is garbage or undefined @ 2191.\n             Uninitialized argument value @ 2796.\nDiagnostic : False positives.\nRationale  : Both problems share the same cause.\n             Error happens in get_tags(), if parse_match() fails because\n             of parse_tag_line() failing before. Then, `tp` is not\n             correctly initialized and subsequent code accesses garbage\n             values.\n             This is not really possible, as parse_tag_line() should not\n             fail after find_tags() has been successful.\n             That is because find_tags() already does tag line parsing,\n             using parse_tag_line() itself for it (or a quicker\n             alternative that should produce same result). That's why\n             return value of parse_match() is ignored, and subsequent\n             code assumes it is successful.\nResolution : Assert parse_match() always successful.","Eliseo Martínez",true],["de2cc958effde5b65655ea97d27ae4563c59d88a","5c31185ebcdcfd329397d45474b62c2634b88685@gmail.com","Fix warnings: tag.c: jumpto_tag(): Np dereference: MI.\n\nProblem    : Dereference of null pointer @ 2399.\nDiagnostic : Multithreading issue.\nRationale  : Error can only occur if global `g_do_tagpreview` changes\n             while the function is executing.\nResolution : Use local copy of global var.","Eliseo Martínez",true],["61baa24c54f1b9c2d288eb851877f348c740c095","5c31185ebcdcfd329397d45474b62c2634b88685@gmail.com","Fix warnings: tag.c: get_tags(): Uninitialized arg: RI.\n\nProblem    : Uninitialized argument value @ 2798.\nDiagnostic : Real issue.\nRationale  : Tags doesn't have to have a kind. When they have one, both\n             `tp.tagkind` and `tp.tagkind_end` are nonnull. But when\n             they don't, `tp.tagkind` will we null (but defined), while\n             `tp.tagkind_end` will be undefined.\n             Therefore, reported invocation is indeed using a garbage\n             value for a tag with no kind.\n             Problem doesn't have consequences because `add_tag_field()`\n             doesn't use `end` param if `start` param is null.\nResolution : Don't use `tp.tagkind_end` if `tp.tagkind` is null.","Eliseo Martínez",true],["32379fb88328c9c88776441ab95218190b3c6485","5c31185ebcdcfd329397d45474b62c2634b88685@gmail.com","Fix warnings: window.c: win_rotate(): Np dereference: FP.\n\nProblem    : Dereference of null pointer @ 1268.\nDiagnostic : False positive.\nRationale  : Suggested error path implies current window's frame to be\n             the only child of its parent, which is ruled out by\n             `if (firstwin == lastwin) {` check at the beginning.\nResolution : Assert another child remains after removing current frame.\n             Strictly, assert is only needed in false branch of\n             conditional, but we add it the same in the true branch to\n             reduce reader surprise.\n             Several forms of a single assert after\n             `if (firstwin == lastwin) {` were tried, but analyzer\n             cannot follow implications that way.","Eliseo Martínez",true],["6589cdc931383f60b5d7ff58adde2767f556ee20","5c31185ebcdcfd329397d45474b62c2634b88685@gmail.com","Fix warnings: window.c: winframe_remove(): Np dereference: FP.\n\nProblem    : Dereference of null pointer @ 2196.\nDiagnostic : False positive.\nRationale  : Suggested error path implies `frp->child == NULL` while\n             being under condition `frp2->fr_layout == frp->fr_layout`,\n             which is impossible:\n             - If frp2 is frp's parent, then frp2's layout is FR_COL or\n               FR_ROW;\n             - if frp->child is NULL, the frp's layout is FR_LEAF.\n             - Therefore, they can't be equal.\nResolution : Assert frp->child not null.","Eliseo Martínez",true],["1c0f7b15da3b9c4c517a4719578bc7bee1ddf288","5c31185ebcdcfd329397d45474b62c2634b88685@gmail.com","Fix warnings: window.c: win_drag_vsep_line(): Np dereference: FP.\n\nProblem    : Dereference of null pointer @ 4512.\nDiagnostic : False positive.\nRationale  : Suggested error path implies `fr == NULL` after 4504.\n             That's not possible, because:\n             - curfr and curfr->next must be both nonnull, as we are\n               dragging the divider between the two.\n             - after conditional, fr is one of those two (the one that\n               grows).\nResolution : Assert fr.","Eliseo Martínez",true],["e747835576338a8778db2caeb1418f99ff4a6a77","5c31185ebcdcfd329397d45474b62c2634b88685@gmail.com","Fix warnings: window.c: tabline_height(): Np dereference: FP.\n\nProblem    : Dereference of null pointer @ 4978.\nDiagnostic : False positive.\nRationale  : tabline_height() shouldn't be called when a tab doesn't\n             exist yet (this is, before initialization).\nResolution : Assert function precondition.","Eliseo Martínez",true],["dd27de534d89d34f39642a840ae9a0a98b691ee3","5c31185ebcdcfd329397d45474b62c2634b88685@gmail.com","Fix warnings: eval.c: set_var_lval(): Np dereference: FP.\n\nProblem    : Dereference of null pointer @ 2273.\nDiagnostic : False positive.\nRationale  : Suggested error would happen when assigning an rvalue with\n             more items than the lvalue. Then we would enter conditional\n             at:\n             ```\n             if (lp->ll_li->li_next == NULL) {\n               /* Need to add an empty item. */\n               list_append_number(lp->ll_list, 0);\n             }\n             lp->ll_li = lp->ll_li->li_next;\n             ```\n             Analyzer thinks the value assigned to lp->ll_li is still\n             NULL and is hit on the next iteration.\nResolution : Assert lp->ll_li->li_next is not null anymore after\n             list_append_number().","Eliseo Martínez",true],["d5c41d12f6f30e3b6c188a9781a853d5606bc7da","5c31185ebcdcfd329397d45474b62c2634b88685@gmail.com","Fix warnings: eval.c: dictitem_alloc(): Out-of-bounds access: FP.\n\nProblem    : Out-of-bound array access @ 5737.\nDiagnostic : False positive.\nRationale  : Situation is intentional. `dictitem_T` is a prefix all dict\n             items whill share, but actual size of each item will be\n             different depending on its key length. `di_key` array field\n             is declared of size 1 just to have a field name, but real\n             size will vary for each item.\nResolution : Make analyzer ignore it.\n             This could be refactored to use C99-allowed variable length\n             arrays, but eval.c is bound to dissappear, so no effort is\n             done in that sense.","Eliseo Martínez",true],["be0c253ec7e4ac11d42f626b388d08cfd08fbc7f","5c31185ebcdcfd329397d45474b62c2634b88685@gmail.com","Fix warnings: eval.c: item_compare(): Garbage value: MI.\n\nProblem    : Result of operation is garbage or undefined @ 13565.\nDiagnostic : Multithreading issue.\nRationale  : Problem occurs only if global (static) variable\n             `item_compare_keep_zero` changes after being used by\n             `do_sort_uniq` but before being used by `item_compare` or\n             `item_compare2`.\nResolution : This is not an intra-function problem, as other MI's\n             before, but rather an inter-function one. Thus, it can't be\n             solved by using local copy of global. Therefore, we are\n             forced to do a bit refactoring. We can't simply add a bool\n             param to item_compare/item_compare2, as they couldn't be\n             passed to qsort() that way. So, item_compare/item_compare2\n             are added a bool param and curried versions of them are\n             added and used in their place.","Eliseo Martínez",true],["e88b87e1acd53993e633f77ca4173a7ada656c9f","5c31185ebcdcfd329397d45474b62c2634b88685@gmail.com","Fix warnings: eval.c: clear_tv(): Bad free: RI.\n\nProblem    : Bad free @ 16076.\nDiagnostic : Real issue.\nRationale  : A non-allocated string is set at 4127, which later on can\n             be tried to be freed if aborting.\nResolution : Use an allocated string.","Eliseo Martínez",true],["05f9397d0980526d0206144dc3ade123b548ee54","5c31185ebcdcfd329397d45474b62c2634b88685@gmail.com","Fix warnings: eval.c: get_user_func_name(): Np dereference: FP.\n\nProblem    : Dereference of null pointer @ 18216.\nDiagnostic : False positive.\nRationale  : `hi` and `done` are static. Intended usage is for the first\n             call to have idx == 0, so that they are initialized.\nResolution : Assert hi after (optional) initialization.","Eliseo Martínez",true],["ddc8b23092a4e4fd404a080ed6f5056eaf4777b5","5c31185ebcdcfd329397d45474b62c2634b88685@gmail.com","Fix warnings: eval.c: call_user_func(): Out of bounds: FP.\n\nProblem    : Out-of-bound array access @ 18429.\nDiagnostic : False positive.\nRationale  : Situation is intentional. `dictitem_T` is a prefix all dict\n             items whill share, but actual size of each item will be\n             different depending on its key length. `di_key` array field\n             is declared of size 1 just to have a field name, but real\n             size will vary for each item.\nResolution : Make analyzer ignore it.\n             This could be refactored to use C99-allowed variable length\n             arrays, but eval.c is bound to dissappear, so no effort is\n             done in that sense.","Eliseo Martínez",true]],"size":23,"ref":"refs/heads/clang-analysis-fixes-4","head":"993b5068fe9fbda40f9eadd31ff0725e12165a43"}