summaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
authorRobin Barker <RMBarker@cpan.org>1999-09-07 13:30:18 +0100
committerJarkko Hietaniemi <jhi@iki.fi>1999-09-07 12:49:15 +0000
commit427181846486e3aa5034a647dc1922377185f4c0 (patch)
tree77214104959f745247da88a35a1ff858eede7f44 /ext
parentf8d4b9aa3df7268ea9f1bdecfb17864f5f71ae93 (diff)
downloadperl-427181846486e3aa5034a647dc1922377185f4c0.tar.gz
Fix pointer casts.
To: perl5-porters@perl.org Subject: [ID 19990907.004] [PATCH perl5.005_61] compiler warnings with -Duse64bits Message-Id: <199909071130.MAA11435@tempest.npl.co.uk> p4raw-id: //depot/cfgperl@4100
Diffstat (limited to 'ext')
-rw-r--r--ext/B/B.xs22
-rw-r--r--ext/B/typemap10
-rw-r--r--ext/ByteLoader/bytecode.h2
-rw-r--r--ext/Devel/DProf/DProf.xs4
-rw-r--r--ext/DynaLoader/dl_dlopen.xs4
-rw-r--r--ext/ODBM_File/ODBM_File.xs2
-rw-r--r--ext/POSIX/POSIX.xs12
7 files changed, 31 insertions, 25 deletions
diff --git a/ext/B/B.xs b/ext/B/B.xs
index 570b001853..ad3d00842d 100644
--- a/ext/B/B.xs
+++ b/ext/B/B.xs
@@ -202,7 +202,7 @@ make_sv_object(pTHX_ SV *arg, SV *sv)
}
if (!type) {
type = svclassnames[SvTYPE(sv)];
- iv = (IV)sv;
+ iv = (IV)PTR_CAST sv;
}
sv_setiv(newSVrv(arg, type), iv);
return arg;
@@ -211,7 +211,7 @@ make_sv_object(pTHX_ SV *arg, SV *sv)
static SV *
make_mg_object(pTHX_ SV *arg, MAGIC *mg)
{
- sv_setiv(newSVrv(arg, "B::MAGIC"), (IV)mg);
+ sv_setiv(newSVrv(arg, "B::MAGIC"), (IV)PTR_CAST mg);
return arg;
}
@@ -317,7 +317,7 @@ walkoptree(pTHX_ SV *opsv, char *method)
if (!SvROK(opsv))
croak("opsv is not a reference");
opsv = sv_mortalcopy(opsv);
- o = (OP*)SvIV((SV*)SvRV(opsv));
+ o = (OP*)PTR_CAST SvIV((SV*)SvRV(opsv));
if (walkoptree_debug) {
PUSHMARK(sp);
XPUSHs(opsv);
@@ -332,7 +332,7 @@ walkoptree(pTHX_ SV *opsv, char *method)
OP *kid;
for (kid = ((UNOP*)o)->op_first; kid; kid = kid->op_sibling) {
/* Use the same opsv. Rely on methods not to mess it up. */
- sv_setiv(newSVrv(opsv, cc_opclassname(aTHX_ kid)), (IV)kid);
+ sv_setiv(newSVrv(opsv, cc_opclassname(aTHX_ kid)), (IV)PTR_CAST kid);
walkoptree(aTHX_ opsv, method);
}
}
@@ -437,7 +437,7 @@ walkoptree_debug(...)
OUTPUT:
RETVAL
-#define address(sv) (IV)sv
+#define address(sv) (IV)PTR_CAST sv
IV
address(sv)
@@ -647,10 +647,10 @@ PMOP_pmreplroot(o)
if (o->op_type == OP_PUSHRE) {
sv_setiv(newSVrv(ST(0), root ?
svclassnames[SvTYPE((SV*)root)] : "B::SV"),
- (IV)root);
+ (IV)PTR_CAST root);
}
else {
- sv_setiv(newSVrv(ST(0), cc_opclassname(aTHX_ root)), (IV)root);
+ sv_setiv(newSVrv(ST(0), cc_opclassname(aTHX_ root)), (IV)PTR_CAST root);
}
B::OP
@@ -814,7 +814,11 @@ packiv(sv)
* reach this code anyway (unless sizeof(IV) > 8 but then
* everything else breaks too so I'm not fussed at the moment).
*/
- wp[0] = htonl(((U32)iv) >> (sizeof(IV)*4));
+#ifdef UV_IS_QUAD
+ wp[0] = htonl(((UV)iv) >> (sizeof(UV)*4));
+#else
+ wp[0] = htonl(((U32)iv) >> (sizeof(UV)*4));
+#endif
wp[1] = htonl(iv & 0xffffffff);
ST(0) = sv_2mortal(newSVpvn((char *)wp, 8));
} else {
@@ -1149,7 +1153,7 @@ void
CvXSUB(cv)
B::CV cv
CODE:
- ST(0) = sv_2mortal(newSViv((IV)CvXSUB(cv)));
+ ST(0) = sv_2mortal(newSViv((IV)PTR_CAST CvXSUB(cv)));
void
diff --git a/ext/B/typemap b/ext/B/typemap
index 948fdcd977..5f6af0f2dc 100644
--- a/ext/B/typemap
+++ b/ext/B/typemap
@@ -35,7 +35,7 @@ INPUT
T_OP_OBJ
if (SvROK($arg)) {
IV tmp = SvIV((SV*)SvRV($arg));
- $var = ($type) tmp;
+ $var = ($type)PTR_CAST tmp;
}
else
croak(\"$var is not a reference\")
@@ -43,7 +43,7 @@ T_OP_OBJ
T_SV_OBJ
if (SvROK($arg)) {
IV tmp = SvIV((SV*)SvRV($arg));
- $var = ($type) tmp;
+ $var = ($type)PTR_CAST tmp;
}
else
croak(\"$var is not a reference\")
@@ -51,18 +51,18 @@ T_SV_OBJ
T_MG_OBJ
if (SvROK($arg)) {
IV tmp = SvIV((SV*)SvRV($arg));
- $var = ($type) tmp;
+ $var = ($type)PTR_CAST tmp;
}
else
croak(\"$var is not a reference\")
OUTPUT
T_OP_OBJ
- sv_setiv(newSVrv($arg, cc_opclassname(aTHX_ (OP*)$var)), (IV)$var);
+ sv_setiv(newSVrv($arg, cc_opclassname(aTHX_ (OP*)$var)), (IV)PTR_CAST $var);
T_SV_OBJ
make_sv_object(aTHX_ ($arg), (SV*)($var));
T_MG_OBJ
- sv_setiv(newSVrv($arg, "B::MAGIC"), (IV)$var);
+ sv_setiv(newSVrv($arg, "B::MAGIC"), (IV)PTR_CAST $var);
diff --git a/ext/ByteLoader/bytecode.h b/ext/ByteLoader/bytecode.h
index 1dda7e6af1..5ca0d1afc6 100644
--- a/ext/ByteLoader/bytecode.h
+++ b/ext/ByteLoader/bytecode.h
@@ -43,7 +43,7 @@ typedef IV IV64;
BGET_U32(hi); \
BGET_U32(lo); \
if (sizeof(IV) == 8) \
- arg = (IV) (hi << (sizeof(IV)*4) | lo); \
+ arg = ((IV)hi << (sizeof(IV)*4) | (IV)lo); \
else if (((I32)hi == -1 && (I32)lo < 0) \
|| ((I32)hi == 0 && (I32)lo >= 0)) { \
arg = (I32)lo; \
diff --git a/ext/Devel/DProf/DProf.xs b/ext/Devel/DProf/DProf.xs
index e5b7788d30..62a0c9ec1c 100644
--- a/ext/Devel/DProf/DProf.xs
+++ b/ext/Devel/DProf/DProf.xs
@@ -292,7 +292,7 @@ prof_mark( opcode ptype )
static U32 lastid;
CV *cv;
- cv = (CV*)SvIVX(Sub);
+ cv = (CV*)PTR_CAST SvIVX(Sub);
svp = hv_fetch(cv_hash, (char*)&cv, sizeof(CV*), TRUE);
if (!SvOK(*svp)) {
GV *gv = CvGV(cv);
@@ -568,7 +568,7 @@ XS(XS_DB_sub)
PUSHMARK( ORIGMARK );
#ifdef G_NODEBUG
- perl_call_sv( (SV*)SvIV(Sub), GIMME | G_NODEBUG);
+ perl_call_sv( (SV*)PTR_CAST SvIV(Sub), GIMME | G_NODEBUG);
#else
curstash = debstash; /* To disable debugging of perl_call_sv */
#ifdef PERLDBf_NONAME
diff --git a/ext/DynaLoader/dl_dlopen.xs b/ext/DynaLoader/dl_dlopen.xs
index a3172088c2..a4dcfb4fbe 100644
--- a/ext/DynaLoader/dl_dlopen.xs
+++ b/ext/DynaLoader/dl_dlopen.xs
@@ -166,7 +166,7 @@ dl_load_file(filename, flags=0)
if (RETVAL == NULL)
SaveError(aTHX_ "%s",dlerror()) ;
else
- sv_setiv( ST(0), (IV)RETVAL);
+ sv_setiv( ST(0), (IV)PTR_CAST RETVAL);
void *
@@ -187,7 +187,7 @@ dl_find_symbol(libhandle, symbolname)
if (RETVAL == NULL)
SaveError(aTHX_ "%s",dlerror()) ;
else
- sv_setiv( ST(0), (IV)RETVAL);
+ sv_setiv( ST(0), (IV)PTR_CAST RETVAL);
void
diff --git a/ext/ODBM_File/ODBM_File.xs b/ext/ODBM_File/ODBM_File.xs
index 7601c3433b..bb2eb4714a 100644
--- a/ext/ODBM_File/ODBM_File.xs
+++ b/ext/ODBM_File/ODBM_File.xs
@@ -111,7 +111,7 @@ odbm_TIEHASH(dbtype, filename, flags, mode)
Zero(RETVAL, 1, ODBM_File_type) ;
RETVAL->dbp = dbp ;
ST(0) = sv_mortalcopy(&PL_sv_undef);
- sv_setptrobj(ST(0), RETVAL, dbtype);
+ sv_setptrobj(ST(0), PTR_CAST RETVAL, dbtype);
}
void
diff --git a/ext/POSIX/POSIX.xs b/ext/POSIX/POSIX.xs
index cc3f0c10d6..0f09aace1a 100644
--- a/ext/POSIX/POSIX.xs
+++ b/ext/POSIX/POSIX.xs
@@ -3246,7 +3246,7 @@ sigaction(sig, action, oldaction = 0)
}
else {
New(0, sigset, 1, sigset_t);
- sv_setptrobj(*svp, sigset, "POSIX::SigSet");
+ sv_setptrobj(*svp, PTR_CAST sigset, "POSIX::SigSet");
}
*sigset = oact.sa_mask;
@@ -3274,7 +3274,7 @@ INIT:
}
else if (sv_derived_from(ST(2), "POSIX::SigSet")) {
IV tmp = SvIV((SV*)SvRV(ST(2)));
- oldsigset = (POSIX__SigSet) tmp;
+ oldsigset = (POSIX__SigSet)PTR_CAST tmp;
}
else {
New(0, oldsigset, 1, sigset_t);
@@ -3455,10 +3455,12 @@ strtol(str, base = 0)
char *unparsed;
PPCODE:
num = strtol(str, &unparsed, base);
- if (num >= IV_MIN && num <= IV_MAX)
- PUSHs(sv_2mortal(newSViv((IV)num)));
- else
+#if IVSIZE <= LONGSIZE
+ if (num < IV_MIN || num > IV_MAX)
PUSHs(sv_2mortal(newSVnv((double)num)));
+ else
+#endif
+ PUSHs(sv_2mortal(newSViv((IV)num)));
if (GIMME == G_ARRAY) {
EXTEND(SP, 1);
if (unparsed)