/* universal.c
*
* Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
- * by Larry Wall and others
+ * 2005, by Larry Wall and others
*
* You may distribute under the terms of either the GNU General Public
* License or the Artistic License, as specified in the README file.
* beginning." --Gandalf, relating Gollum's story
*/
+/* This file contains the code that implements the functions in Perl's
+ * UNIVERSAL package, such as UNIVERSAL->can().
+ */
+
#include "EXTERN.h"
#define PERL_IN_UNIVERSAL_C
#include "perl.h"
vnumify(req),vnormal(req),vnumify(sv),vnormal(sv));
}
- if ( sv_derived_from(sv, "version") ) {
+ if ( SvOK(sv) && sv_derived_from(sv, "version") ) {
ST(0) = vnumify(sv);
} else {
ST(0) = sv;
}
else
{
- version = savepv(SvPV_nolen(ver));
+ version = savesvpv(ver);
}
(void)scan_version(version,vs,TRUE);
Safefree(version);
if (SvROK(sv) && isGV(SvRV(sv)))
gv = (GV*)SvRV(sv);
else
- gv = gv_fetchpv(SvPVX(sv), FALSE, SVt_PVIO);
+ gv = gv_fetchsv(sv, FALSE, SVt_PVIO);
}
if (gv && (io = GvIO(gv))) {
}
Perl_croak(aTHX_ "Internals::HvREHASH $hashref");
}
+
+/*
+ * Local variables:
+ * c-indentation-style: bsd
+ * c-basic-offset: 4
+ * indent-tabs-mode: t
+ * End:
+ *
+ * vim: shiftwidth=4:
+*/