# New Ticket Created by Petter Reinholdtsen # Please include the string: [perl #22201] # in the subject line of all future correspondence about this issue. # <URL: http://rt.perl.org/rt2/Ticket/Display.html?id=22201 > After fixing the configure and compile problems reported in bug #22189, I ran into this compile problem on ia64/HP-UX: cc-wrapper -c -Ae -D_HPUX_SOURCE -Wl,+vnocompatwarnings +DD64 -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 +O2 +Onolimit -DVERSION=\"2.04\" -DXS_VERSION=\"2.04\" +Z "-I../.." Storable.c Error 168: "Storable.xs", line 1303 # Illegal types associated with operator '==': 'sv *(**)(...)' and 'sv *(*[27])(stcxt *,char *)'. cxt->hseen = ((cxt->retrieve_vtbl == sv_old_retrieve) ? newHV() : 0); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Warning 863: "Storable.xs", line 3325 # Result of operator << is widened from int to unsigned long. MBUF_INIT(0); ^^^^^^^^^ Warning 863: "Storable.xs", line 3325 # Result of operator << is widened from int to unsigned long. MBUF_INIT(0); ^^^^^^^^^ Warning 863: "Storable.xs", line 5557 # Result of operator << is widened from int to unsigned long. MBUF_INIT(size); ^^^^^^^^^ Warning 863: "Storable.xs", line 5557 # Result of operator << is widened from int to unsigned long. MBUF_INIT(size); ^^^^^^^^^ make[1]: *** [Storable.o] Error 2 I'm not sure how this should be properly fixed, but casting both to (void*) made it possible to compare the pointers, and got the code compiling. Other options are to cast one of the pointers to the type of the others, or perhaps change the type of one of the pointers to match the other. Here is the patch I am using at the moment: diff -ur src-5.8.0/ext/Storable/Storable.xs src-5.8.0-local/ext/Storable/Storable.xs --- src-5.8.0/ext/Storable/Storable.xs 2002-07-12 00:02:37.000000000 +0200 +++ src-5.8.0-local/ext/Storable/Storable.xs 2003-05-14 17:34:47.000000000 +0200 @@ -1300,7 +1300,7 @@ * new retrieve routines. */ - cxt->hseen = ((cxt->retrieve_vtbl == sv_old_retrieve) ? newHV() : 0); + cxt->hseen = (((void*)cxt->retrieve_vtbl == (void*)sv_old_retrieve) ? newHV() : 0); cxt->aseen = newAV(); /* Where retrieved objects are kept */ cxt->aclass = newAV(); /* Where seen classnames are kept */ When this patch and the patch in #22189 was used, perl 5.8.0 compiled and make tests completed as it should. :)