this patch fixes the dumping of arrays of chars in a structure A+ -- --------------- Eric Pouech (http://perso.wanadoo.fr/eric.pouech/) "The future will be better tomorrow", Vice President Dan Quayle
Name: wdbg ChangeLog: fixes char array in structure dumping GenDate: 2002/01/15 22:00:33 UTC ModifiedFiles: debugger/types.c AddedFiles: =================================================================== RCS file: /home/cvs/cvsroot/wine/wine/debugger/types.c,v retrieving revision 1.26 diff -u -u -r1.26 types.c --- debugger/types.c 21 Dec 2001 20:29:59 -0000 1.26 +++ debugger/types.c 15 Jan 2002 21:58:48 -0000 @@ -861,24 +861,41 @@ size = DEBUG_GetObjectSize(value->type->un.array.basictype); if( size == 1 ) { + char ach[16]; + int len, clen; + /* * Special handling for character arrays. */ pnt = (char *) value->addr.off; - DEBUG_nchar += DEBUG_Printf(DBG_CHN_MESG, "\""); - for( i=value->type->un.array.start; i < value->type->un.array.end; i++ ) - { - DEBUG_Output(DBG_CHN_MESG, pnt++, 1); - DEBUG_nchar++; - if( DEBUG_nchar > DEBUG_maxchar ) - { - DEBUG_Printf(DBG_CHN_MESG, "...\""); - goto leave; - } - } - DEBUG_nchar += DEBUG_Printf(DBG_CHN_MESG, "\""); - break; - } + len = value->type->un.array.end - value->type->un.array.start + 1; + clen = (DEBUG_nchar + len < DEBUG_maxchar) + ? len : (DEBUG_maxchar - DEBUG_nchar); + + DEBUG_nchar += DEBUG_Printf(DBG_CHN_MESG, "\""); + switch (value->cookie) + { + case DV_TARGET: + for (i = clen; i > 0; i -= sizeof(ach)) + { + DEBUG_READ_MEM(pnt, ach, min(sizeof(ach), i)); + DEBUG_Output(DBG_CHN_MESG, ach, min(sizeof(ach), i)); + } + break; + case DV_HOST: + DEBUG_Output(DBG_CHN_MESG, pnt, clen); + break; + default: assert(0); + } + DEBUG_nchar += clen; + if (clen != len) + { + DEBUG_Printf(DBG_CHN_MESG, "...\""); + goto leave; + } + DEBUG_nchar += DEBUG_Printf(DBG_CHN_MESG, "\""); + break; + } val1 = *value; val1.type = value->type->un.array.basictype; DEBUG_nchar += DEBUG_Printf(DBG_CHN_MESG, "{");