The UNDERBAR macro should use find_rundefsv() as well
authorVincent Pit <perl@profvince.com>
Thu, 3 Jun 2010 09:55:20 +0000 (11:55 +0200)
committerVincent Pit <perl@profvince.com>
Thu, 3 Jun 2010 12:00:49 +0000 (14:00 +0200)
XSUB.h
pod/perl5132delta.pod

diff --git a/XSUB.h b/XSUB.h
index 06cb1c3..ca2c297 100644 (file)
--- a/XSUB.h
+++ b/XSUB.h
@@ -72,8 +72,9 @@ Sets up the C<ix> variable for an XSUB which has aliases.  This is usually
 handled automatically by C<xsubpp>.
 
 =for apidoc Ams||dUNDERBAR
-Sets up the C<padoff_du> variable for an XSUB that wishes to use
-C<UNDERBAR>.
+Sets up any variable needed by the C<UNDERBAR> macro. It used to define
+C<padoff_du>, but it is currently a noop. However, it is strongly adviced
+to still use it for ensuring past and future compatibility.
 
 =for apidoc AmU||UNDERBAR
 The SV* corresponding to the $_ variable. Works even if there
@@ -166,10 +167,8 @@ is a lexical $_ in scope.
 #define XSINTERFACE_FUNC_SET(cv,f)     \
                CvXSUBANY(cv).any_dxptr = (void (*) (pTHX_ void*))(f)
 
-#define dUNDERBAR PADOFFSET padoff_du = find_rundefsvoffset()
-#define UNDERBAR ((padoff_du == NOT_IN_PAD \
-           || PAD_COMPNAME_FLAGS_isOUR(padoff_du)) \
-       ? DEFSV : PAD_SVl(padoff_du))
+#define dUNDERBAR dNOOP
+#define UNDERBAR  find_rundefsv()
 
 /* Simple macros to put new mortal values onto the stack.   */
 /* Typically used to return values from XS functions.       */
index 613f814..92d3b0d 100644 (file)
@@ -184,6 +184,11 @@ XXX Changes which affect the interface available to C<XS> code go here.
 The following new functions or macros have been added to the public API:
 C<SvNV_nomg>,  C<sv_2nv_flags>, C<find_rundefsv>.
 
+=item *
+
+The C<UNDERBAR> macro now calls C<find_rundefsv>. C<dUNDERBAR> is now a
+noop but should still be used to ensure past and future compatibility.
+
 =back
 
 =head1 New Tests