{"push_id":1251579854,"size":4,"distinct_size":3,"ref":"refs/heads/master","head":"0323ec2e90b4ee3ddfd193618c06a052e1c558fd","before":"40791b94c56b1a6da2a0ddeb1f9d5c9d64de8f93","commits":[{"sha":"e15d0c00291835b461b25b9554b5e1c6ff503eb1","author":{"name":"NeilBrown","email":"2d905a3497a379bccf401a15c6d441d61e66863c@suse.com"},"message":"ctags: Don't abort on SYM_RESTRICT\n\nTypes with the 'bitwise' attribute have a symbol with ->type == SYM_RESTRICT.\nctypes should be able to cope.\n\nSigned-off-by: NeilBrown <neilb@suse.com>","distinct":false,"url":"https://api.github.com/repos/neilbrown/sparse/commits/e15d0c00291835b461b25b9554b5e1c6ff503eb1"},{"sha":"903d5f8e92f87256b89b1a8d59179ba687b83a11","author":{"name":"NeilBrown","email":"d3e2a8ddc5fff5556efd7676e64f33f296044cb9@brown.name"},"message":"Ony disallow 'safe' expressions from being compared with NULL.\n\nMOD_SAFE (__attribute__((safe))) marks as value a being safe to\ndereference. i.e. a \"non-null/non-trapping pointer\"\n\nThe places where it is used are:\nTesting a safe value\n   if (foo), foo ?x:y,  if (y || foo)... , etc\nis an error, and testing the negation:\n   if (!foo) ...\nis an error.\n\nAlso there is a currently check that testing it against another value\n   if (foo == y) ...\nis an error.  That doesn't seem justifed.  However testing against NULL:\n   if (foo == NULL) ...\ndoes.\nSo change the comparison test to only consider comparisons with NULL to be an error.\n\nSigned-off-by: NeilBrown <neil@brown.name>","distinct":true,"url":"https://api.github.com/repos/neilbrown/sparse/commits/903d5f8e92f87256b89b1a8d59179ba687b83a11"},{"sha":"b451695b18ef7db567f3fb5d97323c1f63a93fde","author":{"name":"NeilBrown","email":"d3e2a8ddc5fff5556efd7676e64f33f296044cb9@brown.name"},"message":"Allow assignment between MOD_SAFE and non-MOD_SAFE pointers.\n\nIt is perfectly valid to assign a MOD_SAFE pointer to a variable\nthat is not safe.\n\nIt is slightly less obvious that it is safe to assign a non-MOD_SAFE\npointer to a MOD_SAFE variable, but as\n\n\tif (unsafe)\n\t\tsafe = unsafe;\n\nwill preserve the property that 'safe' is safe.  The requirements can\nonly be properly tested with data-flow analysis.  So rather than\nreport errors for correct programs, allow possibly-incorrect programs\nto pass.\n\nSigned-off-by: NeilBrown <neil@brown.name>","distinct":true,"url":"https://api.github.com/repos/neilbrown/sparse/commits/b451695b18ef7db567f3fb5d97323c1f63a93fde"},{"sha":"0323ec2e90b4ee3ddfd193618c06a052e1c558fd","author":{"name":"NeilBrown","email":"d3e2a8ddc5fff5556efd7676e64f33f296044cb9@brown.name"},"message":"Preserve attributes/address space when evaluating function return type.\n\nFor the same reason that evaluate_dereference() create a new SYM_NODE\nto hold modifiers and address_space of the pointer evaluate_call()\npotentially needs a SYM_NODE.\n\nWithout this, an attribute given to a function return value is lost.\n\nSigned-off-by: NeilBrown <neil@brown.name>","distinct":true,"url":"https://api.github.com/repos/neilbrown/sparse/commits/0323ec2e90b4ee3ddfd193618c06a052e1c558fd"}]}
{"actor":{"display_login":"neilbrown"}}