Tuomo Mattila <[email protected]> wrote: > +BOOL WINAPI GetVolumePathNamesForVolumeNameA(LPCSTR volumename, LPSTR > volumepathname, DWORD buflen, PDWORD returnlen) > +{ > + > + BOOL ret = FALSE; > + WCHAR* volumenameW = 0; > + LPWSTR volumepathnameW = 0; > + > + if (volumename == 0 || volumepathname == 0 || returnlen == 0) > + { > + SetLastError(RPC_X_NULL_REF_POINTER); > + return FALSE; > + }
It's a common practice to use NULL for pointers, and not 0. Something tells me that RPC_xxxx error code has nothing to do here, do you have a test case for that? > + memset(volumepathname, 0, buflen); Is there any reason that you zero out the whole 'volumepathname' here? > + volumepathnameW = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, > buflen*sizeof(WCHAR)); > + if (volumepathnameW == 0) return FALSE; Same for 'volumepathnameW' here. > + if ((volumenameW = FILE_name_AtoW(volumename, TRUE)) == 0) return FALSE; > + > + ret = GetVolumePathNamesForVolumeNameW(volumenameW, volumepathnameW, > buflen, returnlen); > + if (*returnlen > 0) > + FILE_name_WtoA(volumepathnameW, (*returnlen), volumepathname, > (*returnlen)); There is no need to put '*returnlen' in braces. Besides, '*returnlen' may differ for multibyte and unicode strings. -- Dmitry.
