)]}'
{
  "commit": "fa3f91e7c4c73fd233104cf3cad4890dd6121043",
  "tree": "39a096c35ab7816e6fb8b3fa086b2d1408f5c583",
  "parents": [
    "7b5e31b8cb427cd95a307c607741cc52a39cb951"
  ],
  "author": {
    "name": "Chris Dickens",
    "email": "christopher.a.dickens@gmail.com",
    "time": "Thu Aug 13 10:31:51 2020 -0700"
  },
  "committer": {
    "name": "Chris Dickens",
    "email": "christopher.a.dickens@gmail.com",
    "time": "Thu Aug 13 10:31:51 2020 -0700"
  },
  "message": "descriptor: Miscellaneous improvements to the overall source\n\nIntroduce union types that simplify working with descriptors. Previously\nthere were simple arrays declared on the stack and these were either\nparsed into the target descriptor structure or were accessed with magic\noffsets into the array. Using the union type allows the descriptors to\nbe read with the need to parse it into a separate structure.\n\nFix a memory leak that would occur in the interface parsing code if the\nusbi_reallocf() function failed. Each interface has a separately\nallocated array of endpoints and potential extra descriptors. These\ncannot be freed when using usbi_reallocf(), so switch to use realloc().\n\nFix an obscure limitation where extra descriptors would not be appended\nto the configuration is any previous extra descriptors had already been\nfound.\n\nMake the error checking and error messages consistent across all the\nparsing functions. This includes printing unknown or unexpected\ndescriptor types in hex format, which is often easier to lookup as most\nspecifications use hex notation.\n\nConstify the input buffer argument to the parsing functions.\n\nSigned-off-by: Chris Dickens \u003cchristopher.a.dickens@gmail.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "be0aa83d295b2431654aa2322715215cda8c4cc7",
      "old_mode": 33188,
      "old_path": "libusb/descriptor.c",
      "new_id": "bae201d484bdf17f0af53c26c4f2966cb8429f88",
      "new_mode": 33188,
      "new_path": "libusb/descriptor.c"
    },
    {
      "type": "modify",
      "old_id": "fd49514cc658645791b1461f603ebde2d5e3785f",
      "old_mode": 33188,
      "old_path": "libusb/version_nano.h",
      "new_id": "df646ece13e16c4ad201336dad595bcb8f0c4060",
      "new_mode": 33188,
      "new_path": "libusb/version_nano.h"
    }
  ]
}
