)]}'
{
  "commit": "7bb7043580900b8f06cb418b46004b755ff0fc96",
  "tree": "2c7daae78031c2b18e2ecd27473b57f8a3bef121",
  "parents": [
    "f3e9b338e0badedc87f6014bdbb8594e5af00acd"
  ],
  "author": {
    "name": "Geoff Thorpe",
    "email": "geoff@openssl.org",
    "time": "Thu Jun 01 02:15:40 2000 +0000"
  },
  "committer": {
    "name": "Geoff Thorpe",
    "email": "geoff@openssl.org",
    "time": "Thu Jun 01 02:15:40 2000 +0000"
  },
  "message": "This is the first of two commits (didn\u0027t want to dump them all into the\nsame one). However, the first will temporarily break things until the\nsecond comes through. :-)\n\nThe safestack.h handling was mapping compare callbacks that externally\nare of the type (int (*)(type **,type **)) into the underlying callback\ntype used by stack.[ch], which is (int (*)(void *,void *)). After some\ndegree of digging, it appears that the callback type in the underlying\nstack code should use double pointers too - when the compare operations\nare invoked (from sk_find and sk_sort), they are being used by bsearch\nand qsort to compare two pointers to pointers. This change corrects the\nprototyping (by only casting to the (void*,void*) form at the moment\nit is needed by bsearch and qsort) and makes the mapping in safestack.h\nmore transparent. It also changes from \"void*\" to \"char*\" to stay in\nkeeping with stack.[ch]\u0027s assumed base type of \"char\".\n\nAlso - the \"const\" situation was that safestack.h was throwing away\n\"const\"s, and to compound the problem - a close examination of stack.c\nshowed that (const char **) is not really achieving what it is supposed\nto when the callback is being invoked, what is needed is\n(const char * const *). So the underlying stack.[ch] and the mapping\nmacros in safestack.h have all been altered to correct this.\n\nWhat will follow are the vast quantities of \"const\" corrections required\nin stack-dependant code that was being let \"slip\" through when\nsafestack.h was discarding \"const\"s. These now all come up as compiler\nwarnings.\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "da631581f6eaee64f330e6bf23d68eb68e144cb0",
      "old_mode": 33188,
      "old_path": "crypto/stack/safestack.h",
      "new_id": "6a093201dccac0046dd56e7958b10acb13b3ae3d",
      "new_mode": 33188,
      "new_path": "crypto/stack/safestack.h"
    },
    {
      "type": "modify",
      "old_id": "be132d5dea4a93a932ff8f4441888fac02574bf1",
      "old_mode": 33188,
      "old_path": "crypto/stack/stack.c",
      "new_id": "8f57daa6f4e4eb06f52ecfde4b5a15fc984fe39a",
      "new_mode": 33188,
      "new_path": "crypto/stack/stack.c"
    },
    {
      "type": "modify",
      "old_id": "1613ac5fb1418304d917a0177f6bc9a30cd7cb50",
      "old_mode": 33188,
      "old_path": "crypto/stack/stack.h",
      "new_id": "6f5b4bdce27cd7eb001db45c9f812d65f11c6ac1",
      "new_mode": 33188,
      "new_path": "crypto/stack/stack.h"
    }
  ]
}
