Skip to content

Commit

Permalink
bugfix: cachesize is no longer truncated to 32bit
Browse files Browse the repository at this point in the history
  • Loading branch information
cruppstahl committed Nov 8, 2011
1 parent 79f2f43 commit 1e67530
Show file tree
Hide file tree
Showing 3 changed files with 45 additions and 6 deletions.
6 changes: 6 additions & 0 deletions ChangeLog
@@ -1,3 +1,9 @@
Nov 08, 2011 - chris ---------------------------------------------------
release of hamsterdb-1.1.15
Nov 08, 2011 - chris ---------------------------------------------------
o fixed a bug when using HAM_PARAM_CACHESIZE with values > 2GB; cachesize
was truncated to 32bit (thanks, Jake)

Oct 11, 2011 - chris ---------------------------------------------------
release of hamsterdb-1.1.14

Expand Down
4 changes: 2 additions & 2 deletions src/env.c
Expand Up @@ -281,7 +281,7 @@ _local_fun_create(ham_env_t *env, const char *filename,
*/
{
ham_cache_t *cache;
ham_size_t cachesize=env_get_cachesize(env);
ham_u64_t cachesize=env_get_cachesize(env);

/* cachesize is specified in BYTES */
ham_assert(cachesize, (0));
Expand Down Expand Up @@ -531,7 +531,7 @@ _local_fun_open(ham_env_t *env, const char *filename, ham_u32_t flags,
*/
{
ham_cache_t *cache;
ham_size_t cachesize=env_get_cachesize(env);
ham_u64_t cachesize=env_get_cachesize(env);

if (!cachesize)
cachesize=HAM_DEFAULT_CACHESIZE;
Expand Down
41 changes: 37 additions & 4 deletions unittests/cache.cpp
Expand Up @@ -51,6 +51,7 @@ class CacheTest : public hamsterDB_fixture
BFC_REGISTER_TEST(CacheTest, setSizeDbCreateTest);
BFC_REGISTER_TEST(CacheTest, setSizeDbOpenTest);
BFC_REGISTER_TEST(CacheTest, bigSizeTest);
BFC_REGISTER_TEST(CacheTest, bigSizePublicApiTest);
}

protected:
Expand Down Expand Up @@ -79,11 +80,17 @@ class CacheTest : public hamsterDB_fixture
virtual void teardown() {
__super::teardown();

ham_env_close(m_env, 0);
ham_close(m_db, 0);
ham_delete(m_db);
ham_env_delete(m_env);
if (m_db) {
ham_close(m_db, 0);
ham_delete(m_db);
}
if (m_env) {
ham_env_close(m_env, 0);
ham_env_delete(m_env);
}
BFC_ASSERT(!memtracker_get_leaks(m_alloc));
m_db=0;
m_env=0;
}

void newDeleteTest(void)
Expand Down Expand Up @@ -442,6 +449,32 @@ class CacheTest : public hamsterDB_fixture
BFC_ASSERT(cache_get_page(cache, 0x123ull, 0)==0);
cache_delete(cache);
}

void bigSizePublicApiTest(void)
{
teardown();

ham_u64_t size=1024ull*1024ull*1024ull*16ull;
ham_env_t *env;
ham_env_new(&env);
ham_parameter_t params[]={
{HAM_PARAM_CACHESIZE, size},
{0, 0}
};
BFC_ASSERT_EQUAL(0,
ham_env_create_ex(env, BFC_OPATH(".test"), 0,
0644, &params[0]));

ham_cache_t *cache=env_get_cache(env);
BFC_ASSERT(cache!=0);
BFC_ASSERT_EQUAL(size, cache_get_capacity(cache));

params[0].value=0;
BFC_ASSERT_EQUAL(0, ham_env_get_parameters(env, params));
BFC_ASSERT_EQUAL(size, params[0].value);
BFC_ASSERT_EQUAL(0, ham_env_close(env, 0));
ham_env_delete(env);
}
};

BFC_REGISTER_FIXTURE(CacheTest);
Expand Down

0 comments on commit 1e67530

Please sign in to comment.