Use int32_t for HashIterator ticks
Project: http://git-wip-us.apache.org/repos/asf/lucy-clownfish/repo Commit: http://git-wip-us.apache.org/repos/asf/lucy-clownfish/commit/b3132fb1 Tree: http://git-wip-us.apache.org/repos/asf/lucy-clownfish/tree/b3132fb1 Diff: http://git-wip-us.apache.org/repos/asf/lucy-clownfish/diff/b3132fb1 Branch: refs/heads/master Commit: b3132fb16145d764107b9c12e3394b271cb2921e Parents: 264a3f3 Author: Nick Wellnhofer <[email protected]> Authored: Tue Nov 11 20:51:22 2014 +0100 Committer: Nick Wellnhofer <[email protected]> Committed: Tue Nov 11 20:54:28 2014 +0100 ---------------------------------------------------------------------- runtime/core/Clownfish/Hash.c | 5 +++++ runtime/core/Clownfish/HashIterator.cfh | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/lucy-clownfish/blob/b3132fb1/runtime/core/Clownfish/Hash.c ---------------------------------------------------------------------- diff --git a/runtime/core/Clownfish/Hash.c b/runtime/core/Clownfish/Hash.c index 403ee1e..ac04562 100644 --- a/runtime/core/Clownfish/Hash.c +++ b/runtime/core/Clownfish/Hash.c @@ -320,6 +320,11 @@ Hash_Get_Size_IMP(Hash *self) { static CFISH_INLINE HashEntry* SI_rebuild_hash(Hash *self) { + // HashIterator ticks are int32_t. + if (self->capacity > INT32_MAX / 2) { + THROW(ERR, "Hash grew too large"); + } + HashEntry *old_entries = (HashEntry*)self->entries; HashEntry *entry = old_entries; HashEntry *limit = old_entries + self->capacity; http://git-wip-us.apache.org/repos/asf/lucy-clownfish/blob/b3132fb1/runtime/core/Clownfish/HashIterator.cfh ---------------------------------------------------------------------- diff --git a/runtime/core/Clownfish/HashIterator.cfh b/runtime/core/Clownfish/HashIterator.cfh index a636504..3e9e1f1 100644 --- a/runtime/core/Clownfish/HashIterator.cfh +++ b/runtime/core/Clownfish/HashIterator.cfh @@ -22,7 +22,7 @@ parcel Clownfish; class Clownfish::HashIterator nickname HashIter inherits Clownfish::Obj { Hash *hash; - size_t tick; + int32_t tick; uint32_t capacity; inert void
