Update the documentation of get_hv() to note that it calls Perl_gv_fetchpv(),
Nicholas Clark [Wed, 21 Jan 2009 12:12:12 +0000 (12:12 +0000)]
and hence the 'create' argument is actually 'flags'. Fix code and documentation
that used TRUE or FALSE to use 0 or GV_ADD.

embed.fnc
mg.c
perl.c
pod/perlapi.pod
pod/perlguts.pod
pp_ctl.c
proto.h
utf8.c

index 4a9d6ce..39623e0 100644 (file)
--- a/embed.fnc
+++ b/embed.fnc
@@ -774,7 +774,7 @@ Apd |SV*    |eval_pv        |NN const char* p|I32 croak_on_error
 Apd    |I32    |eval_sv        |NN SV* sv|I32 flags
 Apd    |SV*    |get_sv         |NN const char* name|I32 create
 Apd    |AV*    |get_av         |NN const char* name|I32 create
-Apd    |HV*    |get_hv         |NN const char* name|I32 create
+Apd    |HV*    |get_hv         |NN const char *name|I32 flags
 Apd    |CV*    |get_cv         |NN const char* name|I32 flags
 Apd    |CV*    |get_cvn_flags  |NN const char* name|STRLEN len|I32 flags
 Ap     |int    |init_i18nl10n  |int printwarn
diff --git a/mg.c b/mg.c
index 7acff51..c94f50e 100644 (file)
--- a/mg.c
+++ b/mg.c
@@ -904,7 +904,7 @@ Perl_magic_get(pTHX_ SV *sv, MAGIC *mg)
             else if (PL_compiling.cop_warnings == pWARN_ALL) {
                /* Get the bit mask for $warnings::Bits{all}, because
                 * it could have been extended by warnings::register */
-               HV * const bits=get_hv("warnings::Bits", FALSE);
+               HV * const bits=get_hv("warnings::Bits", 0);
                if (bits) {
                    SV ** const bits_all = hv_fetchs(bits, "all", FALSE);
                    if (bits_all)
diff --git a/perl.c b/perl.c
index d02514c..7e56ef5 100644 (file)
--- a/perl.c
+++ b/perl.c
@@ -2466,21 +2466,22 @@ Perl_get_av(pTHX_ const char *name, I32 create)
 
 =for apidoc p||get_hv
 
-Returns the HV of the specified Perl hash.  If C<create> is set and the
-Perl variable does not exist then it will be created.  If C<create> is not
-set and the variable does not exist then NULL is returned.
+Returns the HV of the specified Perl hash.  C<flags> are passed to
+C<gv_fetchpv>. If C<GV_ADD> is set and the
+Perl variable does not exist then it will be created.  If C<flags> is zero
+and the variable does not exist then NULL is returned.
 
 =cut
 */
 
 HV*
-Perl_get_hv(pTHX_ const char *name, I32 create)
+Perl_get_hv(pTHX_ const char *name, I32 flags)
 {
-    GV* const gv = gv_fetchpv(name, create, SVt_PVHV);
+    GV* const gv = gv_fetchpv(name, flags, SVt_PVHV);
 
     PERL_ARGS_ASSERT_GET_HV;
 
-    if (create)
+    if (flags)
        return GvHVn(gv);
     if (gv)
        return GvHV(gv);
index 8c3e6d6..f51bd96 100644 (file)
@@ -1484,13 +1484,14 @@ Found in file handy.h
 =item get_hv
 X<get_hv>
 
-Returns the HV of the specified Perl hash.  If C<create> is set and the
-Perl variable does not exist then it will be created.  If C<create> is not
-set and the variable does not exist then NULL is returned.
+Returns the HV of the specified Perl hash.  C<flags> are passed to
+C<gv_fetchpv>. If C<GV_ADD> is set and the
+Perl variable does not exist then it will be created.  If C<flags> is zero
+and the variable does not exist then NULL is returned.
 
 NOTE: the perl_ form of this function is deprecated.
 
-       HV*     get_hv(const char* name, I32 create)
+       HV*     get_hv(const char *name, I32 flags)
 
 =for hackers
 Found in file perl.c
index 3ce60d0..6d64c13 100644 (file)
@@ -442,7 +442,7 @@ specified below.
 If you know the name of a hash variable, you can get a pointer to its HV
 by using the following:
 
-    HV*  get_hv("package::varname", FALSE);
+    HV*  get_hv("package::varname", 0);
 
 This returns NULL if the variable does not exist.
 
@@ -669,7 +669,7 @@ your Perl script, use the following routines, depending on the variable type.
 
     SV*  get_sv("package::varname", TRUE);
     AV*  get_av("package::varname", TRUE);
-    HV*  get_hv("package::varname", TRUE);
+    HV*  get_hv("package::varname", GV_ADD);
 
 Notice the use of TRUE as the second parameter.  The new variable can now
 be set, using the routines appropriate to the data type.
index 799683d..8af388f 100644 (file)
--- a/pp_ctl.c
+++ b/pp_ctl.c
@@ -1778,7 +1778,7 @@ PP(pp_caller)
            /* Get the bit mask for $warnings::Bits{all}, because
             * it could have been extended by warnings::register */
            SV **bits_all;
-           HV * const bits = get_hv("warnings::Bits", FALSE);
+           HV * const bits = get_hv("warnings::Bits", 0);
            if (bits && (bits_all=hv_fetchs(bits, "all", FALSE))) {
                mask = newSVsv(*bits_all);
            }
diff --git a/proto.h b/proto.h
index a0dfbbf..e523d17 100644 (file)
--- a/proto.h
+++ b/proto.h
@@ -2434,7 +2434,7 @@ PERL_CALLCONV AV* Perl_get_av(pTHX_ const char* name, I32 create)
 #define PERL_ARGS_ASSERT_GET_AV        \
        assert(name)
 
-PERL_CALLCONV HV*      Perl_get_hv(pTHX_ const char* name, I32 create)
+PERL_CALLCONV HV*      Perl_get_hv(pTHX_ const char *name, I32 flags)
                        __attribute__nonnull__(pTHX_1);
 #define PERL_ARGS_ASSERT_GET_HV        \
        assert(name)
diff --git a/utf8.c b/utf8.c
index 8243793..4f4c3ea 100644 (file)
--- a/utf8.c
+++ b/utf8.c
@@ -1498,7 +1498,7 @@ Perl_to_utf8_case(pTHX_ const U8 *p, U8* ustrp, STRLEN *lenp,
     if (special && (uv1 == 0xDF || uv1 > 0xFF)) {
          /* It might be "special" (sometimes, but not always,
          * a multicharacter mapping) */
-        HV * const hv = get_hv(special, FALSE);
+        HV * const hv = get_hv(special, 0);
         SV **svp;
 
         if (hv &&