diff options
author | Axel Wagner <mail@merovius.de> | 2013-05-22 04:04:12 +0400 |
---|---|---|
committer | Axel Wagner <mail@merovius.de> | 2013-05-22 04:04:12 +0400 |
commit | 52f537e9c540fe5492ee6008153ab4db50c4091e (patch) | |
tree | 46501b94385504f5a0657ea9c4992df16f60cd51 | |
parent | 6828bf26e9e370af57d7724fe1dac9a24ac552a8 (diff) |
Bugfix: Return NULL in push_leaf, when trie is full
os->full was set 1, but the overflowed idx_leaf was still used to index
into os->nodes a little later. Returning NULL fixes that.
-rw-r--r-- | src/oid.c | 4 |
1 files changed, 3 insertions, 1 deletions
@@ -269,8 +269,10 @@ static trie_node *push_leaf(git_oid_shorten *os, node_index idx, int push_at, co idx_leaf = (node_index)os->node_count++; - if (os->node_count == SHRT_MAX) + if (os->node_count == SHRT_MAX) { os->full = 1; + return NULL; + } node = &os->nodes[idx]; node->children[push_at] = -idx_leaf; |