summaryrefslogtreecommitdiff
path: root/gv.c
diff options
context:
space:
mode:
authorIlya Zakharevich <ilya@math.ohio-state.edu>1997-01-21 10:26:32 +1200
committerChip Salzenberg <chip@atlantic.net>1997-01-25 15:58:00 +1200
commite7ea3e70155d0bea30720ba41eb6bb6742aac0d1 (patch)
treeeced55218bc1fc8626006cea8162ac9db29e39f1 /gv.c
parent9e3a2af888982d0a201149cbcdbf3feb6771acb4 (diff)
downloadperl-e7ea3e70155d0bea30720ba41eb6bb6742aac0d1.tar.gz
patch for LWP 5.05 to make it play with both 5.003 and 5.003_20 + overload patch
Diffstat (limited to 'gv.c')
-rw-r--r--gv.c18
1 files changed, 11 insertions, 7 deletions
diff --git a/gv.c b/gv.c
index 89533ff906..3b09463e16 100644
--- a/gv.c
+++ b/gv.c
@@ -912,8 +912,8 @@ HV* stash;
AMT *amtp=mg ? (AMT*)mg->mg_ptr: NULL;
AMT amt;
- if (mg && (amtp=((AMT*)(mg->mg_ptr)))->was_ok_am == amagic_generation &&
- amtp->was_ok_sub == sub_generation)
+ if (mg && amtp->was_ok_am == amagic_generation
+ && amtp->was_ok_sub == sub_generation)
return AMT_AMAGIC(amtp);
if (amtp && AMT_AMAGIC(amtp)) { /* Have table. */
int i;
@@ -997,10 +997,10 @@ HV* stash;
if ( cp = (char *)AMG_names[0] ) {
/* Try to find via inheritance. */
- gv = gv_fetchmeth(stash, "()", 2, 0); /* A cooky: "()". */
+ gv = gv_fetchmeth(stash, "()", 2, -1); /* A cooky: "()". */
if (gv) sv = GvSV(gv);
- if (!sv) /* Empty */;
+ if (!gv) goto notable;
else if (SvTRUE(sv)) amt.fallback=AMGfallYES;
else if (SvOK(sv)) amt.fallback=AMGfallNEVER;
}
@@ -1057,6 +1057,7 @@ HV* stash;
}
}
/* Here we have no table: */
+ notable:
AMT_AMAGIC_off(&amt);
sv_magic((SV*)stash, 0, 'c', (char*)&amt, sizeof(AMTS));
return FALSE;
@@ -1222,8 +1223,9 @@ int flags;
notfound = 1; lr = 1;
} else {
if (off==-1) off=method;
- sprintf(buf, "Operation `%s': no method found,\n\tleft argument %s%.256s,\n\tright argument %s%.256s",
+ sprintf(buf, "Operation `%s': no method found,%sargument %s%.256s%s%.256s",
AMG_names[method + assignshift],
+ (flags & AMGf_unary ? " " : "\n\tleft "),
SvAMAGIC(left)?
"in overloaded package ":
"has no overloaded magic",
@@ -1231,8 +1233,10 @@ int flags;
HvNAME(SvSTASH(SvRV(left))):
"",
SvAMAGIC(right)?
- "in overloaded package ":
- "has no overloaded magic",
+ ",\n\tright argument in overloaded package ":
+ (flags & AMGf_unary
+ ? ""
+ : ",\n\tright argument has no overloaded magic"),
SvAMAGIC(right)?
HvNAME(SvSTASH(SvRV(right))):
"");