itss: Enlarge buffer to include space for a concatenated value.

This commit is contained in:
Erich Hoover 2012-01-27 09:48:47 -07:00 committed by Alexandre Julliard
parent 8ab4f85bbb
commit 88f6e898c6
1 changed files with 6 additions and 5 deletions

View File

@ -406,7 +406,6 @@ static HRESULT WINAPI ITSS_IStorageImpl_OpenStorage(
IStorage** ppstg) IStorage** ppstg)
{ {
ITSS_IStorageImpl *This = impl_from_IStorage(iface); ITSS_IStorageImpl *This = impl_from_IStorage(iface);
static const WCHAR szRoot[] = { '/', 0 };
struct chmFile *chmfile; struct chmFile *chmfile;
WCHAR *path, *p; WCHAR *path, *p;
DWORD len; DWORD len;
@ -418,7 +417,7 @@ static HRESULT WINAPI ITSS_IStorageImpl_OpenStorage(
if( !chmfile ) if( !chmfile )
return E_FAIL; return E_FAIL;
len = strlenW( This->dir ) + strlenW( pwcsName ) + 1; len = strlenW( This->dir ) + strlenW( pwcsName ) + 2; /* need room for a terminating slash */
path = HeapAlloc( GetProcessHeap(), 0, len*sizeof(WCHAR) ); path = HeapAlloc( GetProcessHeap(), 0, len*sizeof(WCHAR) );
strcpyW( path, This->dir ); strcpyW( path, This->dir );
@ -435,10 +434,12 @@ static HRESULT WINAPI ITSS_IStorageImpl_OpenStorage(
*p = '/'; *p = '/';
} }
if(*--p == '/') /* add a terminating slash if one does not already exist */
if(*(p-1) != '/')
{
*p++ = '/';
*p = 0; *p = 0;
}
strcatW( path, szRoot );
TRACE("Resolving %s\n", debugstr_w(path)); TRACE("Resolving %s\n", debugstr_w(path));