This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
fix definition of GvFILEGV()
authorDavid Mitchell <davem@iabyn.com>
Tue, 12 Nov 2013 15:39:04 +0000 (15:39 +0000)
committerDavid Mitchell <davem@iabyn.com>
Wed, 13 Nov 2013 10:38:40 +0000 (10:38 +0000)
It was:

    #define GvFILE(gv)   (GvFILE_HEK(gv) ? HEK_KEY(GvFILE_HEK(gv)) : NULL)
    #define GvFILEGV(gv) (gv_fetchfile(GvFILE(gv)))

which is a problem, since gv_fetchfile() doesn't accept a non-null
argument. Change it so that the (cond ? foo : NULL) thing is outside
gv_fetchfile(). This is all a bit academic since GvFILE_HEK should never
be null, but it at least it shuts up a compiler warning.

gv.h

diff --git a/gv.h b/gv.h
index 1e17f35..d7ca92f 100644 (file)
--- a/gv.h
+++ b/gv.h
@@ -141,8 +141,9 @@ Return the CV from the GV.
 
 #define GvLINE(gv)     (GvGP(gv)->gp_line)
 #define GvFILE_HEK(gv) (GvGP(gv)->gp_file_hek)
-#define GvFILE(gv)     (GvFILE_HEK(gv) ? HEK_KEY(GvFILE_HEK(gv)) : NULL)
-#define GvFILEGV(gv)   (gv_fetchfile(GvFILE(gv)))
+#define GvFILEx(gv)    HEK_KEY(GvFILE_HEK(gv))
+#define GvFILE(gv)     (GvFILE_HEK(gv) ? GvFILEx(gv) : NULL)
+#define GvFILEGV(gv)   (GvFILE_HEK(gv) ? gv_fetchfile(GvFILEx(gv)) : NULL)
 
 #define GvEGV(gv)      (GvGP(gv)->gp_egv)
 #define GvEGVx(gv)     (isGV_with_GP(gv) ? GvEGV(gv) : NULL)