[PATCH 3/3] dmloader: Use dump_DMUS_OBJECTDESC to dump data to avoid truncation in TRACE.

Christian Costa titan.costa at gmail.com
Tue Nov 6 02:05:55 CST 2012


---
 dlls/dmloader/container.c |    6 ++++--
 dlls/dmloader/debug.c     |   40 ++++++++++++++++++----------------------
 dlls/dmloader/debug.h     |    4 ++--
 dlls/dmloader/loader.c    |   25 +++++++++++++++++++------
 4 files changed, 43 insertions(+), 32 deletions(-)

diff --git a/dlls/dmloader/container.c b/dlls/dmloader/container.c
index 1c8bf31..6053108 100644
--- a/dlls/dmloader/container.c
+++ b/dlls/dmloader/container.c
@@ -420,8 +420,10 @@ static HRESULT WINAPI IDirectMusicContainerImpl_IDirectMusicObject_ParseDescript
 		}
 	}	
 	
-	TRACE(": returning descriptor:\n%s\n", debugstr_DMUS_OBJECTDESC(pDesc));
-	return S_OK;	
+	TRACE(": returning descriptor:\n");
+	if (TRACE_ON(dmloader))
+	  dump_DMUS_OBJECTDESC(pDesc);
+	return S_OK;
 }
 
 static const IDirectMusicObjectVtbl DirectMusicContainer_Object_Vtbl = {
diff --git a/dlls/dmloader/debug.c b/dlls/dmloader/debug.c
index 95c5df2..9e5c576 100644
--- a/dlls/dmloader/debug.c
+++ b/dlls/dmloader/debug.c
@@ -22,6 +22,8 @@
 
 #include "dmloader_private.h"
 
+WINE_DEFAULT_DEBUG_CHANNEL(dmloader);
+
 /* figures out whether given FOURCC is valid DirectMusic form ID */
 BOOL IS_VALID_DMFORM (FOURCC chunkID) {
 	if ((chunkID == DMUS_FOURCC_AUDIOPATH_FORM) || (chunkID == DMUS_FOURCC_BAND_FORM) || (chunkID == DMUS_FOURCC_CHORDMAP_FORM)
@@ -479,28 +481,22 @@ static const char *debugstr_DMUS_CONTAINED_OBJF_FLAGS (DWORD flagmask) {
     return debugstr_flags (flagmask, flags, sizeof(flags)/sizeof(flags[0]));
 }
 
-const char *debugstr_DMUS_OBJECTDESC (LPDMUS_OBJECTDESC pDesc) {
-	if (pDesc) {
-		char buffer[1024], *ptr = buffer;
-		
-		ptr += sprintf(ptr, "DMUS_OBJECTDESC (%p):", pDesc);
-		ptr += sprintf(ptr, "\n - dwSize = 0x%08X", pDesc->dwSize);
-		ptr += sprintf(ptr, "\n - dwValidData = 0x%08X (%s)", pDesc->dwValidData, debugstr_DMUS_OBJ_FLAGS (pDesc->dwValidData));
-		if (pDesc->dwValidData & DMUS_OBJ_CLASS) ptr +=	sprintf(ptr, "\n - guidClass = %s", debugstr_dmguid(&pDesc->guidClass));
-		if (pDesc->dwValidData & DMUS_OBJ_OBJECT) ptr += sprintf(ptr, "\n - guidObject = %s", debugstr_guid(&pDesc->guidObject));
-		if (pDesc->dwValidData & DMUS_OBJ_DATE) ptr += sprintf(ptr, "\n - ftDate = %s", debugstr_filetime (&pDesc->ftDate));
-		if (pDesc->dwValidData & DMUS_OBJ_VERSION) ptr += sprintf(ptr, " - vVersion = %s", debugstr_dmversion(&pDesc->vVersion));
-		if (pDesc->dwValidData & DMUS_OBJ_NAME) ptr += sprintf(ptr, "\n - wszName = %s", debugstr_w(pDesc->wszName));
-		if (pDesc->dwValidData & DMUS_OBJ_CATEGORY) ptr += sprintf(ptr, "\n - wszCategory = %s", debugstr_w(pDesc->wszCategory));
-		if (pDesc->dwValidData & DMUS_OBJ_FILENAME) ptr += sprintf(ptr, "\n - wszFileName = %s", debugstr_w(pDesc->wszFileName));
-		if (pDesc->dwValidData & DMUS_OBJ_MEMORY) ptr += sprintf(ptr, "\n - llMemLength = 0x%s\n  - pbMemData = %p",
-		                                                     wine_dbgstr_longlong(pDesc->llMemLength), pDesc->pbMemData);
-		if (pDesc->dwValidData & DMUS_OBJ_STREAM) ptr += sprintf(ptr, "\n - pStream = %p", pDesc->pStream);
-		
-		return wine_dbg_sprintf("%s", buffer);
-	} else {
-		return wine_dbg_sprintf("(NULL)");
-	}
+/* Dump whole DMUS_OBJECTDESC struct */
+void dump_DMUS_OBJECTDESC(LPDMUS_OBJECTDESC desc)
+{
+    TRACE("DMUS_OBJECTDESC (%p):\n", desc);
+    TRACE(" - dwSize = %d\n", desc->dwSize);
+    TRACE(" - dwValidData = %s\n", debugstr_DMUS_OBJ_FLAGS (desc->dwValidData));
+    if (desc->dwValidData & DMUS_OBJ_CLASS)    TRACE(" - guidClass = %s\n", debugstr_dmguid(&desc->guidClass));
+    if (desc->dwValidData & DMUS_OBJ_OBJECT)   TRACE(" - guidObject = %s\n", debugstr_guid(&desc->guidObject));
+    if (desc->dwValidData & DMUS_OBJ_DATE)     TRACE(" - ftDate = %s\n", debugstr_filetime (&desc->ftDate));
+    if (desc->dwValidData & DMUS_OBJ_VERSION)  TRACE(" - vVersion = %s\n", debugstr_dmversion(&desc->vVersion));
+    if (desc->dwValidData & DMUS_OBJ_NAME)     TRACE(" - wszName = %s\n", debugstr_w(desc->wszName));
+    if (desc->dwValidData & DMUS_OBJ_CATEGORY) TRACE(" - wszCategory = %s\n", debugstr_w(desc->wszCategory));
+    if (desc->dwValidData & DMUS_OBJ_FILENAME) TRACE(" - wszFileName = %s\n", debugstr_w(desc->wszFileName));
+    if (desc->dwValidData & DMUS_OBJ_MEMORY)   TRACE(" - llMemLength = 0x%s\n  - pbMemData = %p\n",
+                                                     wine_dbgstr_longlong(desc->llMemLength), desc->pbMemData);
+    if (desc->dwValidData & DMUS_OBJ_STREAM)   TRACE(" - pStream = %p\n", desc->pStream);
 }
 
 const char *debugstr_DMUS_IO_CONTAINER_HEADER (LPDMUS_IO_CONTAINER_HEADER pHeader) {
diff --git a/dlls/dmloader/debug.h b/dlls/dmloader/debug.h
index 546d643..2481ab7 100644
--- a/dlls/dmloader/debug.h
+++ b/dlls/dmloader/debug.h
@@ -55,9 +55,9 @@ extern const char *debugstr_filetime (const FILETIME *time) DECLSPEC_HIDDEN;
 extern const char *debugstr_dmguid (const GUID *id) DECLSPEC_HIDDEN;
 /* returns name of given error code */
 extern const char *debugstr_dmreturn (DWORD code) DECLSPEC_HIDDEN;
+/* Dump whole DMUS_OBJECTDESC struct */
+extern void dump_DMUS_OBJECTDESC(DMUS_OBJECTDESC *desc) DECLSPEC_HIDDEN;
 
-/* dump whole DMUS_OBJECTDESC struct */
-extern const char *debugstr_DMUS_OBJECTDESC (LPDMUS_OBJECTDESC pDesc) DECLSPEC_HIDDEN;
 extern const char *debugstr_DMUS_IO_CONTAINER_HEADER (LPDMUS_IO_CONTAINER_HEADER pHeader) DECLSPEC_HIDDEN;
 extern const char *debugstr_DMUS_IO_CONTAINED_OBJECT_HEADER (LPDMUS_IO_CONTAINED_OBJECT_HEADER pHeader) DECLSPEC_HIDDEN;
 
diff --git a/dlls/dmloader/loader.c b/dlls/dmloader/loader.c
index 4a3e586..8285d65 100644
--- a/dlls/dmloader/loader.c
+++ b/dlls/dmloader/loader.c
@@ -30,8 +30,11 @@ static HRESULT DMUSIC_InitLoaderSettings (LPDIRECTMUSICLOADER8 iface);
 static HRESULT DMUSIC_GetLoaderSettings (LPDIRECTMUSICLOADER8 iface, REFGUID pClassID, WCHAR* wszSearchPath, LPBOOL pbCache);
 static HRESULT DMUSIC_SetLoaderSettings (LPDIRECTMUSICLOADER8 iface, REFGUID pClassID, WCHAR* wszSearchPath, LPBOOL pbCache);
 
-static HRESULT DMUSIC_CopyDescriptor (LPDMUS_OBJECTDESC pDst, LPDMUS_OBJECTDESC pSrc) {
-	TRACE(": copy\n%s\n", debugstr_DMUS_OBJECTDESC(pSrc));
+static HRESULT DMUSIC_CopyDescriptor(LPDMUS_OBJECTDESC pDst, LPDMUS_OBJECTDESC pSrc)
+{
+	if (TRACE_ON(dmloader))
+		dump_DMUS_OBJECTDESC(pSrc);
+
 	/* copy field by field */
 	if (pSrc->dwValidData & DMUS_OBJ_CLASS) pDst->guidClass = pSrc->guidClass;
 	if (pSrc->dwValidData & DMUS_OBJ_OBJECT) pDst->guidObject = pSrc->guidObject;
@@ -134,7 +137,10 @@ static HRESULT WINAPI IDirectMusicLoaderImpl_IDirectMusicLoader_GetObject(LPDIRE
 	DMUS_OBJECTDESC GotDesc;
 	BOOL bCache;
 
-	TRACE("(%p, %p, %s, %p): pDesc:\n%s\n", This, pDesc, debugstr_dmguid(riid), ppv, debugstr_DMUS_OBJECTDESC(pDesc));
+	TRACE("(%p)->(%p, %s, %p)\n", This, pDesc, debugstr_dmguid(riid), ppv);
+
+	if (TRACE_ON(dmloader))
+	  dump_DMUS_OBJECTDESC(pDesc);
 	
 	/* sometimes it happens that guidClass is missing... which is a BadThingTM */
 	if (!(pDesc->dwValidData & DMUS_OBJ_CLASS)) {
@@ -384,7 +390,10 @@ static HRESULT WINAPI IDirectMusicLoaderImpl_IDirectMusicLoader_SetObject(LPDIRE
 	LPWINE_LOADER_ENTRY pObjectEntry, pNewEntry;
 	HRESULT hr;
 
-	TRACE("(%p, %p): pDesc:\n%s\n", This, pDesc, debugstr_DMUS_OBJECTDESC(pDesc));
+	TRACE("(%p)->(%p)\n", This, pDesc);
+
+	if (TRACE_ON(dmloader))
+		dump_DMUS_OBJECTDESC(pDesc);
 
 	/* create stream and load additional info from it */
 	if (pDesc->dwValidData & DMUS_OBJ_FILENAME) {
@@ -487,7 +496,9 @@ static HRESULT WINAPI IDirectMusicLoaderImpl_IDirectMusicLoader_SetObject(LPDIRE
 	}		
 	
 	/* add new entry */
-	TRACE(": adding alias entry with following info:\n%s\n", debugstr_DMUS_OBJECTDESC(pDesc));
+	TRACE(": adding alias entry with following info:\n");
+	if (TRACE_ON(dmloader))
+		dump_DMUS_OBJECTDESC(pDesc);
 	pNewEntry = HeapAlloc (GetProcessHeap (), HEAP_ZERO_MEMORY, sizeof(WINE_LOADER_ENTRY));
 	/* use this function instead of pure memcpy due to streams (memcpy just copies pointer), 
 	   which is basically used further by app that called SetDescriptor... better safety than exception */
@@ -670,7 +681,9 @@ static HRESULT WINAPI IDirectMusicLoaderImpl_IDirectMusicLoader_ReleaseObject(LP
 		if ((Desc.dwValidData & DMUS_OBJ_OBJECT) &&
 			(pObjectEntry->Desc.dwValidData & (DMUS_OBJ_OBJECT | DMUS_OBJ_LOADED)) &&
 			IsEqualGUID (&Desc.guidObject, &pObjectEntry->Desc.guidObject)) {
-			TRACE(": found it by object GUID\n%s\n", debugstr_DMUS_OBJECTDESC(&pObjectEntry->Desc));
+			TRACE(": found it by object GUID\n");
+			if (TRACE_ON(dmloader))
+				dump_DMUS_OBJECTDESC(&pObjectEntry->Desc);
 			result = S_OK;
 			break;
 		}




More information about the wine-patches mailing list