diff -urN qtcl-1.2.orig/qtcl/QTclInterp.c qtcl-1.2/qtcl/QTclInterp.c --- qtcl-1.2.orig/qtcl/QTclInterp.c 2005-11-01 23:48:43 +0200 +++ qtcl-1.2/qtcl/QTclInterp.c 2006-05-19 21:02:46 +0300 @@ -182,7 +182,7 @@ if(len<0) len=strlen(name); for(QObject *p=it.current();p;++it,p=it.current()) { char buffer[100]; - sprintf(buffer,"O0x%x",(unsigned int)p); + sprintf(buffer,p==NULL?"O0x0":"O%p",p); const char *oname=p->name(buffer); if(!strncmp(oname,name,len) && oname[len]==0) return p; } @@ -214,7 +214,7 @@ char namebuffer[100]; const char *name=o->name(0); if(!name) { - sprintf(namebuffer,"O0x%x",(unsigned int)o); + sprintf(namebuffer,o==NULL?"O0x%x":"O%p",o); name=namebuffer; } int l=strlen(name); diff -urN qtcl-1.2.orig/qtcl/QTclUtil.c qtcl-1.2/qtcl/QTclUtil.c --- qtcl-1.2.orig/qtcl/QTclUtil.c 2005-10-19 09:43:56 +0300 +++ qtcl-1.2/qtcl/QTclUtil.c 2006-05-19 21:10:07 +0300 @@ -25,6 +25,12 @@ Tcl_AppendElement(interp,buffer); } +void Tcl_AppendPtrAsHex(Tcl_Interp *interp,void* val) { +char buffer[50]; + val==NULL?sprintf(buffer,"%0x.*x",sizeof(val)*2,0):sprintf(buffer,"%.*p",sizeof(val)*2,val); + Tcl_AppendElement(interp,buffer); +} + void Tcl_AppendHexByte(Tcl_Interp *interp,int val) { char buffer[50]; sprintf(buffer,"%2.2x",(unsigned int)val); diff -urN qtcl-1.2.orig/qtcl/QTclUtil.h qtcl-1.2/qtcl/QTclUtil.h --- qtcl-1.2.orig/qtcl/QTclUtil.h 2005-03-10 15:43:56 +0200 +++ qtcl-1.2/qtcl/QTclUtil.h 2006-05-19 20:36:32 +0300 @@ -11,6 +11,7 @@ void Tcl_AppendInt(Tcl_Interp *interp,int val); void Tcl_AppendBool(Tcl_Interp *interp,int val); void Tcl_AppendIntAsHex(Tcl_Interp *interp,int val); +void Tcl_AppendPtrAsHex(Tcl_Interp *interp,void* val); void Tcl_AppendHexByte(Tcl_Interp *interp,int val); void Tcl_AppendQString(Tcl_Interp *interp,const QString &s); void Tcl_AppendQStringList(Tcl_Interp *interp,const QStringList &list); diff -urN qtcl-1.2.orig/qtcl/QTclWidget.c qtcl-1.2/qtcl/QTclWidget.c --- qtcl-1.2.orig/qtcl/QTclWidget.c 2005-11-01 23:48:43 +0200 +++ qtcl-1.2/qtcl/QTclWidget.c 2006-05-19 20:36:32 +0300 @@ -91,7 +91,7 @@ } else if(!strcmp(argv[1],"widget")) { if(argc!=2) return Tcl_WrongArgs(interp,2,argv,0); Display *d=w->x11Display(); - Tcl_AppendIntAsHex(interp,(int)d); + Tcl_AppendPtrAsHex(interp,d); return TCL_OK; } else if(!strcmp(argv[1],"tooltip")) { switch(argc) {