[Python-checkins] CVS: python/dist/src/Python compile.c,2.109,2.110

Fred L. Drake python-dev@python.org
Fri, 30 Jun 2000 09:20:15 -0700


Update of /cvsroot/python/python/dist/src/Python
In directory slayer.i.sourceforge.net:/tmp/cvs-serv32117/Python

Modified Files:
	compile.c 
Log Message:
Trent Mick <trentm@activestate.com>:

The common technique for printing out a pointer has been to cast to a long 
and use the "%lx" printf modifier. This is incorrect on Win64 where casting 
to a long truncates the pointer. The "%p" formatter should be used instead. 

The problem as stated by Tim: 
> Unfortunately, the C committee refused to define what %p conversion "looks 
> like" -- they explicitly allowed it to be implementation-defined. Older 
> versions of Microsoft C even stuck a colon in the middle of the address (in 
> the days of segment+offset addressing)! 

The result is that the hex value of a pointer will maybe/maybe not have a 0x 
prepended to it. 


Notes on the patch: 

There are two main classes of changes: 
- in the various repr() functions that print out pointers 
- debugging printf's in the various thread_*.h files (these are why the 
patch is large)


Closes SourceForge patch #100505.


Index: compile.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Python/compile.c,v
retrieving revision 2.109
retrieving revision 2.110
diff -C2 -r2.109 -r2.110
*** compile.c	2000/06/28 22:07:35	2.109
--- compile.c	2000/06/30 16:20:13	2.110
***************
*** 131,136 ****
  	if (co->co_name && PyString_Check(co->co_name))
  		name = PyString_AsString(co->co_name);
! 	sprintf(buf, "<code object %.100s at %lx, file \"%.300s\", line %d>",
! 		name, (long)co, filename, lineno);
  	return PyString_FromString(buf);
  }
--- 131,136 ----
  	if (co->co_name && PyString_Check(co->co_name))
  		name = PyString_AsString(co->co_name);
! 	sprintf(buf, "<code object %.100s at %p, file \"%.300s\", line %d>",
! 		name, co, filename, lineno);
  	return PyString_FromString(buf);
  }