Change 14921 by jhi@alpha on 2002/03/01 13:14:18
Subject: Re: Smoke 14900 /pro/3gl/CPAN/perl-current
From: "H.Merijn Brand" <[EMAIL PROTECTED]>
Date: Thu, 28 Feb 2002 18:55:48 +0100
Message-Id: <[EMAIL PROTECTED]>
Affected files ...
.... //depot/perl/x2p/walk.c#17 edit
Differences ...
==== //depot/perl/x2p/walk.c#17 (text) ====
Index: perl/x2p/walk.c
--- perl/x2p/walk.c.~1~ Fri Mar 1 06:30:05 2002
+++ perl/x2p/walk.c Fri Mar 1 06:30:05 2002
@@ -52,7 +52,7 @@
STR *tmp2str;
STR *tmp3str;
char *t;
- char *d, *s = 0;
+ char *d, *s;
int numarg;
int numeric = FALSE;
STR *fstr;
@@ -822,11 +822,8 @@
str_cat(str,")");
break;
case OGSUB:
- case OSUB:
- if (type == OGSUB)
- s = "g";
- else
- s = "";
+ case OSUB: {
+ int gsub = type == OGSUB ? 1 : 0;
str = str_new(0);
tmpstr = str_new(0);
i = 0;
@@ -856,6 +853,7 @@
}
*d = '\0';
str_set(tmp2str,tokenbuf);
+ s = gsub ? "/g" : "/";
}
else {
tmp2str=walk(1,level,ops[node+2].ival,&numarg,P_MIN);
@@ -863,9 +861,10 @@
str_scat(tmp3str,tmp2str);
str_cat(tmp3str,").'\"') =~ s/&/\\$&/g, ");
str_set(tmp2str,"eval $s_");
- s = (char*)(*s == 'g' ? "ge" : "e");
+ s = gsub ? "/ge" : "/e";
i++;
}
+ str_cat(tmp2str,s);
type = ops[ops[node+1].ival].ival;
len = type >> 8;
type &= 255;
@@ -877,8 +876,6 @@
str_scat(str,tmpstr);
str_scat(str,fstr);
str_scat(str,tmp2str);
- str_cat(str,"/");
- str_cat(str,s);
}
else if ((type == OFLD && !split_to_array) || (type == OVAR && len == 1)) {
if (useval && i)
@@ -889,8 +886,6 @@
str_scat(str,fstr);
str_cat(str,"/");
str_scat(str,tmp2str);
- str_cat(str,"/");
- str_cat(str,s);
}
else {
i++;
@@ -903,8 +898,6 @@
str_scat(str,tmpstr);
str_cat(str,"/$s/");
str_scat(str,tmp2str);
- str_cat(str,"/");
- str_cat(str,s);
}
if (useval && i)
str_cat(str,")");
@@ -913,7 +906,7 @@
str_free(tmp2str);
str_free(tmp3str);
numeric = 1;
- break;
+ break; }
case ONUM:
str = walk(1,level,ops[node+1].ival,&numarg,P_MIN);
numeric = 1;
End of Patch.