]> granicus.if.org Git - vim/commitdiff
patch 8.2.2891: cannot build with Perl 5.34 v8.2.2891
authorichizok <gclient.gaap@gmail.com>
Thu, 27 May 2021 16:05:14 +0000 (18:05 +0200)
committerBram Moolenaar <Bram@vim.org>
Thu, 27 May 2021 16:05:14 +0000 (18:05 +0200)
Problem:    Cannot build with Perl 5.34.
Solution:   Add Perl_SvTRUE_common(). (Ozaki Kiichi, closes #8266,
            closes #8250)

src/if_perl.xs
src/version.c

index 999dff50ec4ac8e359e2db8d7d95a3999a042701..3b0fead5df2ccc0d656dbe16b89b8ee9d7243bfe 100644 (file)
@@ -700,12 +700,41 @@ S_POPMARK(pTHX)
 /* perl-5.32 needs Perl_POPMARK */
 # if (PERL_REVISION == 5) && (PERL_VERSION >= 32)
 #  define Perl_POPMARK S_POPMARK
+# endif
+
+/* perl-5.34 needs Perl_SvTRUE_common; used in SvTRUE_nomg_NN */
+# if (PERL_REVISION == 5) && (PERL_VERSION >= 34)
+PERL_STATIC_INLINE bool
+Perl_SvTRUE_common(pTHX_ SV * sv, const bool sv_2bool_is_fallback)
+{
+    if (UNLIKELY(SvIMMORTAL_INTERP(sv)))
+       return SvIMMORTAL_TRUE(sv);
+
+    if (! SvOK(sv))
+       return FALSE;
+
+    if (SvPOK(sv))
+       return SvPVXtrue(sv);
+
+    if (SvIOK(sv))
+       return SvIVX(sv) != 0; /* casts to bool */
+
+    if (SvROK(sv) && !(SvOBJECT(SvRV(sv)) && HvAMAGIC(SvSTASH(SvRV(sv)))))
+       return TRUE;
+
+    if (sv_2bool_is_fallback)
+       return sv_2bool_nomg(sv);
+
+    return isGV_with_GP(sv);
+}
+# endif
 
 /* perl-5.32 needs Perl_SvTRUE */
+# if (PERL_REVISION == 5) && (PERL_VERSION >= 32)
 PERL_STATIC_INLINE bool
 Perl_SvTRUE(pTHX_ SV *sv) {
     if (!LIKELY(sv))
-        return FALSE;
+       return FALSE;
     SvGETMAGIC(sv);
     return SvTRUE_nomg_NN(sv);
 }
index e61edc6a31def6fd4ef865b8fbdf505c05d9bb11..775c4f496ada5780fac2db00243f03964272614b 100644 (file)
@@ -750,6 +750,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    2891,
 /**/
     2890,
 /**/