[dlls/dmloader/container.c] Strncpy elimination.
Peter Berg Larsen
pebl at math.ku.dk
Fri Apr 15 16:54:35 CDT 2005
I have no idea of whether pwszAlias should be '\0' if it is truncated, or
could the memcpy be dropped if in this case?
Changelog:
Strncpy elimination.
Index: dlls/dmloader/container.c
===================================================================
RCS file: /home/wine/wine/dlls/dmloader/container.c,v
retrieving revision 1.12
diff -u -r1.12 container.c
--- dlls/dmloader/container.c 9 Jan 2005 16:42:53 -0000 1.12
+++ dlls/dmloader/container.c 15 Apr 2005 20:13:56 -0000
@@ -77,7 +77,7 @@
ICOM_THIS_MULTI(IDirectMusicContainerImpl, ContainerVtbl, iface);
struct list *pEntry;
LPWINE_CONTAINER_ENTRY pContainedObject;
- DWORD dwCount = 0;
+ DWORD dwLength, dwCount = 0;
TRACE("(%p, %s, %ld, %p, %p)\n", This, debugstr_dmguid(rguidClass), dwIndex, pDesc, pwszAlias);
@@ -107,12 +107,15 @@
LIST_FOR_EACH (pEntry, This->pContainedObjects) {
pContainedObject = LIST_ENTRY (pEntry, WINE_CONTAINER_ENTRY, entry);
- if (IsEqualGUID (rguidClass, &GUID_DirectMusicAllTypes) || IsEqualGUID (rguidClass, &pContainedObject->Desc.guidClass)) {
+ if (IsEqualGUID (rguidClass, &GUID_DirectMusicAllTypes) ||
+ IsEqualGUID (rguidClass, &pContainedObject->Desc.guidClass)) {
if (dwCount == dwIndex) {
HRESULT result = S_OK;
if (pwszAlias) {
- strncpyW (pwszAlias, pContainedObject->wszAlias, DMUS_MAX_FILENAME);
- if (strlenW (pContainedObject->wszAlias) > DMUS_MAX_FILENAME)
+ dwLength = strlenW (pContainedObject->wszAlias);
+ memcpy (pwszAlias, pContainedObject->wszAlias,
+ min(dwLength+1,DMUS_MAX_FILENAME) * sizeof(WCHAR));
+ if (dwLength > DMUS_MAX_FILENAME)
result = DMUS_S_STRING_TRUNCATED;
}
if (pDesc)
@@ -199,15 +202,15 @@
dwNewFlags |= DMUS_OBJ_OBJECT;
}
if (pDesc->dwValidData & DMUS_OBJ_NAME) {
- strncpyW (This->Desc.wszName, pDesc->wszName, DMUS_MAX_NAME);
+ lstrcpynW (This->Desc.wszName, pDesc->wszName, DMUS_MAX_NAME);
dwNewFlags |= DMUS_OBJ_NAME;
}
if (pDesc->dwValidData & DMUS_OBJ_CATEGORY) {
- strncpyW (This->Desc.wszCategory, pDesc->wszCategory, DMUS_MAX_CATEGORY);
+ lstrcpynW (This->Desc.wszCategory, pDesc->wszCategory, DMUS_MAX_CATEGORY);
dwNewFlags |= DMUS_OBJ_CATEGORY;
}
if (pDesc->dwValidData & (DMUS_OBJ_FILENAME | DMUS_OBJ_FULLPATH)) {
- strncpyW (This->Desc.wszFileName, pDesc->wszFileName, DMUS_MAX_FILENAME);
+ lstrcpynW (This->Desc.wszFileName, pDesc->wszFileName, DMUS_MAX_FILENAME);
dwNewFlags |= (pDesc->dwValidData & (DMUS_OBJ_FILENAME | DMUS_OBJ_FULLPATH));
}
if (pDesc->dwValidData & DMUS_OBJ_VERSION) {
More information about the wine-patches
mailing list