This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
make PadlistNAMES() lvalue again.
authorDavid Mitchell <davem@iabyn.com>
Mon, 8 Jun 2015 08:15:17 +0000 (09:15 +0100)
committerDavid Mitchell <davem@iabyn.com>
Mon, 8 Jun 2015 08:15:17 +0000 (09:15 +0100)
The PadlistNAMES() macro was introduced with v5.17.3-69-g86d2498.
This macro happened to be lvalue-capable, although it wasn't documented
as such.

v5.21.6-163-g9b7476d as a side effect, broke the lvalueness, which broke
Coro.

This commit restores the lvalueness.

pad.h

diff --git a/pad.h b/pad.h
index 1f86248..31b8715 100644 (file)
--- a/pad.h
+++ b/pad.h
@@ -295,7 +295,7 @@ Restore the old pad saved into the local variable opad by PAD_SAVE_LOCAL()
 
 #define PadlistARRAY(pl)       (pl)->xpadl_alloc
 #define PadlistMAX(pl)         (pl)->xpadl_max
 
 #define PadlistARRAY(pl)       (pl)->xpadl_alloc
 #define PadlistMAX(pl)         (pl)->xpadl_max
-#define PadlistNAMES(pl)       ((PADNAMELIST *)*PadlistARRAY(pl))
+#define PadlistNAMES(pl)       *((PADNAMELIST **)PadlistARRAY(pl))
 #define PadlistNAMESARRAY(pl)  PadnamelistARRAY(PadlistNAMES(pl))
 #define PadlistNAMESMAX(pl)    PadnamelistMAX(PadlistNAMES(pl))
 #define PadlistREFCNT(pl)      1       /* reserved for future use */
 #define PadlistNAMESARRAY(pl)  PadnamelistARRAY(PadlistNAMES(pl))
 #define PadlistNAMESMAX(pl)    PadnamelistMAX(PadlistNAMES(pl))
 #define PadlistREFCNT(pl)      1       /* reserved for future use */