)]}'
{
  "commit": "281ca64c8ac9b9ee6ec72f2b776016aa98e964ba",
  "tree": "896ad067c8c31f24adbf47a00470efe49e0f76cd",
  "parents": [
    "0e8f3997bd7b11390e9ec7b7de7eb31f403c1c83"
  ],
  "author": {
    "name": "Chris Dickens",
    "email": "christopher.a.dickens@gmail.com",
    "time": "Wed Feb 26 15:55:10 2020 -0800"
  },
  "committer": {
    "name": "Chris Dickens",
    "email": "christopher.a.dickens@gmail.com",
    "time": "Wed Feb 26 15:55:10 2020 -0800"
  },
  "message": "core: Introduce accessor functions for structure private data\n\nThe backend private data for the internal library structures has been\naccessed through a zero-length os_priv array of type unsigned char.\nThis approach had two particular disadvantages:\n\n  1) A special attribute was needed on the \u0027os_priv\u0027 member to ensure\n     that the field was properly aligned to a natural pointer alignment.\n     The support needed for this is not available in every compiler.\n\n  2) Each access to the private data areas required an explicit cast\n     from unsigned char to the type required by the backend.\n\nThis change reworks the way the private data is accessed by the\nbackends. New accessor functions return the private data as a void\npointer type, removing the need for an explicit cast (except for Haiku,\nwhich is C++). The special alignment attribute trickery is also replaced\nby simple pointer arithmetic.\n\nSigned-off-by: Chris Dickens \u003cchristopher.a.dickens@gmail.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "2282a38fd5d269e8b55ff963637b723dbffb9f51",
      "old_mode": 33188,
      "old_path": "libusb/core.c",
      "new_id": "ad2f83703760423ff30253c453e02bf8cc2552d5",
      "new_mode": 33188,
      "new_path": "libusb/core.c"
    },
    {
      "type": "modify",
      "old_id": "595409e8459a46c79d97dfc3782c9794ca81ba2c",
      "old_mode": 33188,
      "old_path": "libusb/io.c",
      "new_id": "a691311377f787640be66b63195ccccde759fa9b",
      "new_mode": 33188,
      "new_path": "libusb/io.c"
    },
    {
      "type": "modify",
      "old_id": "57333d8ead01e631203ef0df4d6602704845338a",
      "old_mode": 33188,
      "old_path": "libusb/libusbi.h",
      "new_id": "c60b20131941abbeddeee39b26efa9813977be70",
      "new_mode": 33188,
      "new_path": "libusb/libusbi.h"
    },
    {
      "type": "modify",
      "old_id": "805ec07dcef3f6131bf4f06c84d354efaef78a31",
      "old_mode": 33188,
      "old_path": "libusb/os/darwin_usb.c",
      "new_id": "4aaa6e44634c225e682728dcf213a4c42179960c",
      "new_mode": 33188,
      "new_path": "libusb/os/darwin_usb.c"
    },
    {
      "type": "modify",
      "old_id": "e0c77132061994101cef885e35b4e09f7034dbae",
      "old_mode": 33188,
      "old_path": "libusb/os/haiku_pollfs.cpp",
      "new_id": "90c795a91b79d06d477b830c0a674b76fbe59f68",
      "new_mode": 33188,
      "new_path": "libusb/os/haiku_pollfs.cpp"
    },
    {
      "type": "modify",
      "old_id": "539a996ca4c2157e6029b21e30126aa35aa3a781",
      "old_mode": 33188,
      "old_path": "libusb/os/haiku_usb_backend.cpp",
      "new_id": "6e59deddcee5a154500bf55d00a8af9988afce43",
      "new_mode": 33188,
      "new_path": "libusb/os/haiku_usb_backend.cpp"
    },
    {
      "type": "modify",
      "old_id": "82cf088a1da61f2581ce0b35ea3c00cdd7d89219",
      "old_mode": 33188,
      "old_path": "libusb/os/haiku_usb_raw.cpp",
      "new_id": "9bd89c4195d0e889cf005402ed5ea1674e5e7b12",
      "new_mode": 33188,
      "new_path": "libusb/os/haiku_usb_raw.cpp"
    },
    {
      "type": "modify",
      "old_id": "b997b4618e95050c47be46476136f48a6157c868",
      "old_mode": 33188,
      "old_path": "libusb/os/linux_usbfs.c",
      "new_id": "d6c8ea4a1dc183028ad8ac17e6eeaa258addb1aa",
      "new_mode": 33188,
      "new_path": "libusb/os/linux_usbfs.c"
    },
    {
      "type": "modify",
      "old_id": "157b2f8625eb633c58c76185cc3ed6ac11b02c19",
      "old_mode": 33188,
      "old_path": "libusb/os/netbsd_usb.c",
      "new_id": "8bbda307f36e8110a49ea3c7c66c2489dc5ba6f0",
      "new_mode": 33188,
      "new_path": "libusb/os/netbsd_usb.c"
    },
    {
      "type": "modify",
      "old_id": "508d2831799699d90d368fb7d6a41788686685bd",
      "old_mode": 33188,
      "old_path": "libusb/os/openbsd_usb.c",
      "new_id": "478826764a7c757808ba5fdcee2ee8d812333766",
      "new_mode": 33188,
      "new_path": "libusb/os/openbsd_usb.c"
    },
    {
      "type": "modify",
      "old_id": "5d951c93ffec6d439c758161b24e169b1aa78a1e",
      "old_mode": 33188,
      "old_path": "libusb/os/sunos_usb.c",
      "new_id": "08db3e9747a38cf80dcc57ea48ae3950aecc3c9e",
      "new_mode": 33188,
      "new_path": "libusb/os/sunos_usb.c"
    },
    {
      "type": "modify",
      "old_id": "3a11c56f24d1811779c3621d3c386d9f60e4392d",
      "old_mode": 33188,
      "old_path": "libusb/os/windows_common.c",
      "new_id": "4cf0cdf879535a75b8332fc35069e96d255c11e6",
      "new_mode": 33188,
      "new_path": "libusb/os/windows_common.c"
    },
    {
      "type": "modify",
      "old_id": "63d3183c704010ae9c3e5f67026b257451aabd59",
      "old_mode": 33188,
      "old_path": "libusb/os/windows_common.h",
      "new_id": "b2da4d93636524e916b8d135ee5383931d8421f1",
      "new_mode": 33188,
      "new_path": "libusb/os/windows_common.h"
    },
    {
      "type": "modify",
      "old_id": "46935a6b540c538aac27d5fc865ffa95917fa935",
      "old_mode": 33188,
      "old_path": "libusb/os/windows_usbdk.c",
      "new_id": "9c3e8fd8e0b7c15f2735c51f5cb49441a1029c39",
      "new_mode": 33188,
      "new_path": "libusb/os/windows_usbdk.c"
    },
    {
      "type": "modify",
      "old_id": "ce4d3a104bfb8f54cd4fb09593966774c55b217f",
      "old_mode": 33188,
      "old_path": "libusb/os/windows_winusb.c",
      "new_id": "db85d85d3980eff7d467e87bc5d7d33d1b863119",
      "new_mode": 33188,
      "new_path": "libusb/os/windows_winusb.c"
    },
    {
      "type": "modify",
      "old_id": "74d0e081dbffa58059c0949f96d3d040ed2920dc",
      "old_mode": 33188,
      "old_path": "libusb/os/windows_winusb.h",
      "new_id": "9f6eb9bd7828ae41649312802cbf7334ed7dcdd6",
      "new_mode": 33188,
      "new_path": "libusb/os/windows_winusb.h"
    },
    {
      "type": "modify",
      "old_id": "9d9bfeec1a857f00ef56c8bdf6deba163ff6c418",
      "old_mode": 33188,
      "old_path": "libusb/version_nano.h",
      "new_id": "b5f8e70603658d95bdff50b5a4c03471a5914a36",
      "new_mode": 33188,
      "new_path": "libusb/version_nano.h"
    }
  ]
}
