summaryrefslogtreecommitdiff
path: root/sal
diff options
context:
space:
mode:
authorVladimir Glazounov <vg@openoffice.org>2008-08-18 09:46:38 +0000
committerVladimir Glazounov <vg@openoffice.org>2008-08-18 09:46:38 +0000
commit8c8d9102c5f102958976f4346b06e5e6ee3096eb (patch)
treeb32fe79b3d2676f2414a7f0a920e5f98e7daa5ea /sal
parent1594c65164ac28ef3f180822dd64c03721e9baca (diff)
INTEGRATION: CWS mhu19 (1.6.2); FILE MERGED
2008/07/28 13:33:40 mhu 1.6.2.1: #i92217# Make 64bit clean.
Diffstat (limited to 'sal')
-rw-r--r--sal/rtl/source/alloc_global.c13
1 files changed, 5 insertions, 8 deletions
diff --git a/sal/rtl/source/alloc_global.c b/sal/rtl/source/alloc_global.c
index b1121d13b93b..3215b6e66f18 100644
--- a/sal/rtl/source/alloc_global.c
+++ b/sal/rtl/source/alloc_global.c
@@ -7,7 +7,7 @@
* OpenOffice.org - a multi-platform office productivity suite
*
* $RCSfile: alloc_global.c,v $
- * $Revision: 1.6 $
+ * $Revision: 1.7 $
*
* This file is part of OpenOffice.org.
*
@@ -197,9 +197,7 @@ SAL_CALL rtl_allocateMemory (sal_Size n) SAL_THROW_EXTERN_C()
char * addr;
sal_Size size = RTL_MEMORY_ALIGN(n + RTL_MEMALIGN, RTL_MEMALIGN);
- int index = (size - 1) >> RTL_MEMALIGN_SHIFT;
OSL_ASSERT(RTL_MEMALIGN >= sizeof(sal_Size));
-
if (n >= SAL_MAX_SIZE - (RTL_MEMALIGN + RTL_MEMALIGN - 1))
{
/* requested size too large for roundup alignment */
@@ -207,8 +205,8 @@ SAL_CALL rtl_allocateMemory (sal_Size n) SAL_THROW_EXTERN_C()
}
try_alloc:
- if (index < RTL_MEMORY_CACHED_LIMIT >> RTL_MEMALIGN_SHIFT)
- addr = (char*)rtl_cache_alloc (g_alloc_table[index]);
+ if (size <= RTL_MEMORY_CACHED_LIMIT)
+ addr = (char*)rtl_cache_alloc(g_alloc_table[(size - 1) >> RTL_MEMALIGN_SHIFT]);
else
addr = (char*)rtl_arena_alloc (gp_alloc_arena, &size);
@@ -238,9 +236,8 @@ void SAL_CALL rtl_freeMemory (void * p) SAL_THROW_EXTERN_C()
char * addr = (char*)(p) - RTL_MEMALIGN;
sal_Size size = ((sal_Size*)(addr))[0];
- int index = (size - 1) >> RTL_MEMALIGN_SHIFT;
- if (index < RTL_MEMORY_CACHED_LIMIT >> RTL_MEMALIGN_SHIFT)
- rtl_cache_free (g_alloc_table[index], addr);
+ if (size <= RTL_MEMORY_CACHED_LIMIT)
+ rtl_cache_free(g_alloc_table[(size - 1) >> RTL_MEMALIGN_SHIFT], addr);
else
rtl_arena_free (gp_alloc_arena, addr, size);
}