patch against the Perl language binding for Dazuko to fix an "integer vs pointer size mismatch" on 64bit systems --- example_perl/IO.xs 21 Sep 2006 08:10:43 -0000 1.2 +++ example_perl/IO.xs 1 Aug 2007 08:54:25 -0000 @@ -112,7 +112,7 @@ PPCODE: /* otherwise return($acc, $deny, $event, ...) */ undef = &PL_sv_undef; /* shortcut */ EXTEND(SP, 13); - PUSHs(sv_2mortal(newSViv((IV)acc))); + PUSHs(sv_2mortal(newSViv(PTR2IV(acc)))); PUSHs(sv_2mortal(newSViv(acc->deny))); PUSHs(acc->set_event ? sv_2mortal(newSViv(acc->event)) : undef); PUSHs(acc->set_flags ? sv_2mortal(newSViv(acc->flags)) : undef); @@ -130,12 +130,12 @@ PPCODE: int dazukoReturnAccess(ref, deny = 0) - int ref + IV ref int deny PREINIT: struct dazuko_access *acc; CODE: - acc = (struct dazuko_access *)ref; + acc = INT2PTR(struct dazuko_access *, ref); acc->deny = deny; RETVAL = dazukoReturnAccess(&acc); OUTPUT: @@ -205,70 +205,70 @@ PPCODE: /* return $id if we succeeded to register */ if (rc == 0) { EXTEND(SP, 1); - PUSHs(sv_2mortal(newSViv((IV)idp))); + PUSHs(sv_2mortal(newSViv(PTR2IV(idp)))); } int dazukoUnregister_TS(id) - int id + IV id PREINIT: dazuko_id_t *idp; CODE: - idp = (dazuko_id_t *)id; + idp = INT2PTR(dazuko_id_t *, id); RETVAL = dazukoUnregister_TS(&idp); OUTPUT: RETVAL int dazukoSetAccessMask_TS(id, mask) - int id + IV id int mask PREINIT: dazuko_id_t *idp; CODE: - idp = (dazuko_id_t *)id; + idp = INT2PTR(dazuko_id_t *, id); RETVAL = dazukoSetAccessMask_TS(idp, mask); OUTPUT: RETVAL int dazukoAddIncludePath_TS(id, path) - int id + IV id char *path PREINIT: dazuko_id_t *idp; CODE: - idp = (dazuko_id_t *)id; + idp = INT2PTR(dazuko_id_t *, id); RETVAL = dazukoAddIncludePath_TS(idp, path); OUTPUT: RETVAL int dazukoAddExcludePath_TS(id, path) - int id + IV id char *path PREINIT: dazuko_id_t *idp; CODE: - idp = (dazuko_id_t *)id; + idp = INT2PTR(dazuko_id_t *, id); RETVAL = dazukoAddExcludePath_TS(idp, path); OUTPUT: RETVAL int dazukoRemoveAllPaths_TS(id) - int id + IV id PREINIT: dazuko_id_t *idp; CODE: - idp = (dazuko_id_t *)id; + idp = INT2PTR(dazuko_id_t *, id); RETVAL = dazukoRemoveAllPaths_TS(idp); OUTPUT: RETVAL void dazukoGetAccess_TS(id) - int id + IV id PREINIT: /* * this one needs some more attention -- it is not merely @@ -281,7 +281,7 @@ PREINIT: int rc; SV *undef; PPCODE: - idp = (dazuko_id_t *)id; + idp = INT2PTR(dazuko_id_t *, id); /* place an "undef" as (default) RETVAL */ ST(0) = sv_newmortal(); /* invoke the C routine */ @@ -300,7 +300,7 @@ PPCODE: /* otherwise return($acc, $deny, $event, ...) */ undef = &PL_sv_undef; /* shortcut */ EXTEND(SP, 13); - PUSHs(sv_2mortal(newSViv((IV)acc))); + PUSHs(sv_2mortal(newSViv(PTR2IV(acc)))); PUSHs(sv_2mortal(newSViv(acc->deny))); PUSHs(acc->set_event ? sv_2mortal(newSViv(acc->event)) : undef); PUSHs(acc->set_flags ? sv_2mortal(newSViv(acc->flags)) : undef); @@ -318,15 +318,15 @@ PPCODE: int dazukoReturnAccess_TS(id, ref, deny = 0) - int id - int ref + IV id + IV ref int deny PREINIT: dazuko_id_t *idp; struct dazuko_access *acc; CODE: - idp = (dazuko_id_t *)id; - acc = (struct dazuko_access *)ref; + idp = INT2PTR(dazuko_id_t *, id); + acc = INT2PTR(struct dazuko_access *, ref); acc->deny = deny; RETVAL = dazukoReturnAccess_TS(idp, &acc); OUTPUT: