)]}'
{
  "commit": "177fbab747da4f58cb2a8ce010b3515c86dd67c9",
  "tree": "f3936a6b4db9c110bef4bb4a28131ec6de06aa25",
  "parents": [
    "b697d92f56511e804b8ba20ccbe7bdc85dc66810"
  ],
  "author": {
    "name": "René Scharfe",
    "email": "l.s.r@web.de",
    "time": "Sat Jun 15 20:32:58 2019 +0200"
  },
  "committer": {
    "name": "Junio C Hamano",
    "email": "gitster@pobox.com",
    "time": "Mon Jun 17 18:14:59 2019 -0700"
  },
  "message": "coccinelle: use COPY_ARRAY for copying arrays\n\nThe current semantic patch for COPY_ARRAY transforms memcpy(3) calls on\npointers, but Coccinelle distinguishes them from arrays.  It already\ncontains three rules to handle the options for sizeof (i.e. source,\ndestination and type), and handling arrays as source and destination\nwould require four times as many rules if we enumerated all cases.\n\nWe also don\u0027t handle array subscripts, and supporting that would\nincrease the number of rules by another factor of four.  (An isomorphism\ntelling Coccinelle that \"sizeof x[...]\" is equivalent to \"sizeof *x\"\nwould be nice..)\n\nSupport arrays and array subscripts, but keep the number of rules down\nby adding normalization steps: First turn array subscripts into\nderefences, then determine the types of expressions used with sizeof and\nreplace them with these types, and then convert the different possible\ncombinations of arrays and pointers with memcpy(3) to COPY_ARRAY.\n\nSigned-off-by: Rene Scharfe \u003cl.s.r@web.de\u003e\nSigned-off-by: Junio C Hamano \u003cgitster@pobox.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "01586821dc7c15be2a94c30bfbf4f3b4c94ac5f3",
      "old_mode": 33188,
      "old_path": "contrib/coccinelle/array.cocci",
      "new_id": "46b8d2ee11151b97e4e0cfd56afcf059247d1c54",
      "new_mode": 33188,
      "new_path": "contrib/coccinelle/array.cocci"
    }
  ]
}
