Repository: lucy Updated Branches: refs/heads/master 4677247ce -> ac91ea905
Refactor resizing of Inversion. Project: http://git-wip-us.apache.org/repos/asf/lucy/repo Commit: http://git-wip-us.apache.org/repos/asf/lucy/commit/2fe08b36 Tree: http://git-wip-us.apache.org/repos/asf/lucy/tree/2fe08b36 Diff: http://git-wip-us.apache.org/repos/asf/lucy/diff/2fe08b36 Branch: refs/heads/master Commit: 2fe08b3686270d2367871b9425039c7b07b51d46 Parents: 4677247 Author: Marvin Humphrey <mar...@rectangular.com> Authored: Mon May 2 16:32:31 2016 -0700 Committer: Marvin Humphrey <mar...@rectangular.com> Committed: Mon May 2 16:32:31 2016 -0700 ---------------------------------------------------------------------- core/Lucy/Analysis/Inversion.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/lucy/blob/2fe08b36/core/Lucy/Analysis/Inversion.c ---------------------------------------------------------------------- diff --git a/core/Lucy/Analysis/Inversion.c b/core/Lucy/Analysis/Inversion.c index 18e5e23..32bb0b2 100644 --- a/core/Lucy/Analysis/Inversion.c +++ b/core/Lucy/Analysis/Inversion.c @@ -88,11 +88,13 @@ static void S_grow(Inversion *self, size_t size) { InversionIVARS *const ivars = Inversion_IVARS(self); if (size > ivars->cap) { - uint64_t amount = size * sizeof(Token*); - // Clip rather than wrap. - if (amount > SIZE_MAX || amount < size) { amount = SIZE_MAX; } - ivars->tokens = (Token**)REALLOCATE(ivars->tokens, (size_t)amount); - ivars->cap = size; + if (size > SIZE_MAX / sizeof(Token*) || size > UINT32_MAX) { + THROW(ERR, "Can't grow Inversion to hold %u64 elements", + (uint64_t)size); + } + size_t amount = size * sizeof(Token*); + ivars->tokens = (Token**)REALLOCATE(ivars->tokens, amount); + ivars->cap = (uint32_t)size; memset(ivars->tokens + ivars->size, 0, (size - ivars->size) * sizeof(Token*)); }