Commit 4bfc49a7 authored by Sebastian Lackner's avatar Sebastian Lackner Committed by Alexandre Julliard

oleaut32: Pass size without terminating null to get_cache_entry.

parent 08706ef3
...@@ -119,7 +119,7 @@ static inline bstr_t *bstr_from_str(BSTR str) ...@@ -119,7 +119,7 @@ static inline bstr_t *bstr_from_str(BSTR str)
static inline bstr_cache_entry_t *get_cache_entry(size_t size) static inline bstr_cache_entry_t *get_cache_entry(size_t size)
{ {
unsigned cache_idx = FIELD_OFFSET(bstr_t, u.ptr[size-1])/BUCKET_SIZE; unsigned cache_idx = FIELD_OFFSET(bstr_t, u.ptr[size+sizeof(WCHAR)-1])/BUCKET_SIZE;
return bstr_cache_enabled && cache_idx < sizeof(bstr_cache)/sizeof(*bstr_cache) return bstr_cache_enabled && cache_idx < sizeof(bstr_cache)/sizeof(*bstr_cache)
? bstr_cache + cache_idx ? bstr_cache + cache_idx
: NULL; : NULL;
...@@ -127,14 +127,14 @@ static inline bstr_cache_entry_t *get_cache_entry(size_t size) ...@@ -127,14 +127,14 @@ static inline bstr_cache_entry_t *get_cache_entry(size_t size)
static bstr_t *alloc_bstr(size_t size) static bstr_t *alloc_bstr(size_t size)
{ {
bstr_cache_entry_t *cache_entry = get_cache_entry(size+sizeof(WCHAR)); bstr_cache_entry_t *cache_entry = get_cache_entry(size);
bstr_t *ret; bstr_t *ret;
if(cache_entry) { if(cache_entry) {
EnterCriticalSection(&cs_bstr_cache); EnterCriticalSection(&cs_bstr_cache);
if(!cache_entry->cnt) { if(!cache_entry->cnt) {
cache_entry = get_cache_entry(size+sizeof(WCHAR)+BUCKET_SIZE); cache_entry = get_cache_entry(size+BUCKET_SIZE);
if(cache_entry && !cache_entry->cnt) if(cache_entry && !cache_entry->cnt)
cache_entry = NULL; cache_entry = NULL;
} }
...@@ -258,7 +258,7 @@ void WINAPI SysFreeString(BSTR str) ...@@ -258,7 +258,7 @@ void WINAPI SysFreeString(BSTR str)
return; return;
bstr = bstr_from_str(str); bstr = bstr_from_str(str);
cache_entry = get_cache_entry(bstr->size+sizeof(WCHAR)); cache_entry = get_cache_entry(bstr->size);
if(cache_entry) { if(cache_entry) {
unsigned i; unsigned i;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment