summaryrefslogtreecommitdiff
path: root/XSUB.h
diff options
context:
space:
mode:
Diffstat (limited to 'XSUB.h')
-rw-r--r--XSUB.h25
1 files changed, 13 insertions, 12 deletions
diff --git a/XSUB.h b/XSUB.h
index 0bfb9855c0..8cb3b86a11 100644
--- a/XSUB.h
+++ b/XSUB.h
@@ -38,19 +38,20 @@
#ifdef XS_VERSION
# define XS_VERSION_BOOTCHECK \
- STMT_START { \
- char vn[255], *module = SvPV(ST(0),na); \
- if (items >= 2) /* version supplied as bootstrap arg */ \
- Sv=ST(1); \
- else { /* read version from module::VERSION */ \
- sprintf(vn,"%s::VERSION", module); \
- Sv = perl_get_sv(vn, FALSE); /* XXX GV_ADDWARN */ \
- } \
- if (Sv && (!SvOK(Sv) || strNE(XS_VERSION, SvPV(Sv,na))) ) \
- croak("%s object version %s does not match %s.pm $VERSION %s", \
- module,XS_VERSION, module,(Sv && SvOK(Sv))?SvPV(Sv,na):"(undef)");\
+ STMT_START { \
+ char *vn = "", *module = SvPV(ST(0),na); \
+ if (items >= 2) /* version supplied as bootstrap arg */ \
+ Sv = ST(1); \
+ else { \
+ /* XXX GV_ADDWARN */ \
+ Sv = perl_get_sv(vn = form("%s::XS_VERSION", module), FALSE); \
+ if (!Sv || !SvOK(Sv)) \
+ Sv = perl_get_sv(vn = form("%s::VERSION", module), FALSE); \
+ } \
+ if (Sv && (!SvOK(Sv) || strNE(XS_VERSION, SvPV(Sv, na)))) \
+ croak("%s object version %s does not match $%s %_", \
+ module, XS_VERSION, vn, Sv); \
} STMT_END
#else
# define XS_VERSION_BOOTCHECK
#endif
-