update Changes
[p5sagit/p5-mst-13.2.git] / universal.c
index 0e5a89b..28e0896 100644 (file)
@@ -86,7 +86,6 @@ for class names as well as for objects.
 bool
 Perl_sv_derived_from(pTHX_ SV *sv, const char *name)
 {
-    SV *rv;
     char *type;
     HV *stash;
   
@@ -110,7 +109,6 @@ Perl_sv_derived_from(pTHX_ SV *sv, const char *name)
             (stash && isa_lookup(stash, name, strlen(name), 0) == &PL_sv_yes)
         ? TRUE
         : FALSE ;
 }
 
 void XS_UNIVERSAL_isa(pTHXo_ CV *cv);
@@ -141,6 +139,9 @@ XS(XS_UNIVERSAL_isa)
 
     sv = ST(0);
 
+    if (SvGMAGICAL(sv))
+       mg_get(sv);
+
     if (!SvOK(sv) || !(SvROK(sv) || SvCUR(sv)))
        XSRETURN_UNDEF;
 
@@ -164,6 +165,9 @@ XS(XS_UNIVERSAL_can)
 
     sv = ST(0);
 
+    if (SvGMAGICAL(sv))
+       mg_get(sv);
+
     if (!SvOK(sv) || !(SvROK(sv) || SvCUR(sv)))
        XSRETURN_UNDEF;
 
@@ -250,7 +254,7 @@ XS(XS_UNIVERSAL_VERSION)
                }
                /* they said C<use Foo 1.002_003> and $Foo::VERSION
                 * doesn't look like a float: force numeric compare */
-               SvUPGRADE(sv, SVt_PVNV);
+               (void)SvUPGRADE(sv, SVt_PVNV);
                SvNVX(sv) = str_to_version(sv);
                SvPOK_off(sv);
                SvNOK_on(sv);