• Fred Drake's avatar
    Trent Mick <trentm@activestate.com>: · a44d353e
    Fred Drake yazdı
    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.
    a44d353e
object.c 26.4 KB