[Templates-cvs] cvs commit: Template2/xs Stash.xs
cvs@template-toolkit.org
cvs@template-toolkit.org
cvs 05/03/03 19:17:42
Modified: xs Stash.xs
Log:
* fixed bug in die_object() to stop it from stringifying
non-object references
Revision Changes Path
1.15 +9 -10 Template2/xs/Stash.xs
Index: Stash.xs
===================================================================
RCS file: /template-toolkit/Template2/xs/Stash.xs,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- Stash.xs 2003/03/17 23:05:27 1.14
+++ Stash.xs 2005/03/03 19:17:42 1.15
@@ -26,7 +26,7 @@
*
*---------------------------------------------------------------------
*
-* $Id: Stash.xs,v 1.14 2003/03/17 23:05:27 abw Exp $
+* $Id: Stash.xs,v 1.15 2005/03/03 19:17:42 abw Exp $
*
*=====================================================================*/
@@ -94,7 +94,7 @@
static SV* scalar_dot_length(pTHX_ SV*, AV*);
static char rcsid[] =
- "$Id: Stash.xs,v 1.14 2003/03/17 23:05:27 abw Exp $";
+ "$Id: Stash.xs,v 1.15 2005/03/03 19:17:42 abw Exp $";
/* dispatch table for XS versions of special "virtual methods",
* names must be in alphabetical order
@@ -376,7 +376,6 @@
I32 atroot;
TT_PERF_INIT;
-
/* ignore _private or .private members */
if (!root || *item == '_' || *item == '.') {
return &PL_sv_undef;
@@ -520,8 +519,8 @@
real throwing */
if (SvROK(ERRSV) || !strstr(SvPV(ERRSV, PL_na),
- "Can't locate object method")) {
- die_object(aTHX_ ERRSV);
+ "Can't locate object method")) {
+ die_object(aTHX_ ERRSV);
}
} else {
result = fold_results(aTHX_ n);
@@ -718,11 +717,11 @@
*/
static void die_object (pTHX_ SV *err) {
- if (sv_isobject(err)) {
- /* throw object via ERRSV ($@) */
- SV *errsv = perl_get_sv("@", TRUE);
- sv_setsv(errsv, err);
- (void) die(Nullch);
+ if (sv_isobject(err) || SvROK(err)) {
+ /* throw object via ERRSV ($@) */
+ SV *errsv = perl_get_sv("@", TRUE);
+ sv_setsv(errsv, err);
+ (void) die(Nullch);
}
/* error string sent back via croak() */