/* end of switch, copy results */
*t = ch;
if (xs == buf && xlen >= sizeof(buf)) { /* Ooops! */
- fputs("panic: sprintf overflow - memory corrupted!\n",stderr);
+ PerlIO_puts(PerlIO_stderr(),"panic: sprintf overflow - memory corrupted!\n");
my_exit(1);
}
SvGROW(sv, SvCUR(sv) + (f - s) + xlen + 1 + pre + post);
do_chomp(sv)
register SV *sv;
{
- register I32 count = 0;
+ register I32 count;
STRLEN len;
char *s;
-
+
+ if (RsSNARF(rs))
+ return 0;
+ count = 0;
if (SvTYPE(sv) == SVt_PVAV) {
register I32 i;
I32 max;
s = SvPV_force(sv, len);
if (s && len) {
s += --len;
- if (rspara) {
+ if (RsPARA(rs)) {
if (*s != '\n')
goto nope;
++count;
++count;
}
}
- else if (rslen == 1) {
- if (*s != rschar)
- goto nope;
- ++count;
- }
else {
- if (len < rslen - 1)
- goto nope;
- len -= rslen - 1;
- s -= rslen - 1;
- if (bcmp(s, rs, rslen))
- goto nope;
- count += rslen;
+ STRLEN rslen;
+ char *rsptr = SvPV(rs, rslen);
+ if (rslen == 1) {
+ if (*s != *rsptr)
+ goto nope;
+ ++count;
+ }
+ else {
+ if (len < rslen - 1)
+ goto nope;
+ len -= rslen - 1;
+ s -= rslen - 1;
+ if (memcmp(s, rsptr, rslen))
+ goto nope;
+ count += rslen;
+ }
}
-
*s = '\0';
SvCUR_set(sv, len);
SvNIOK_off(sv);
register char *rc = SvPV(right, rightlen);
register I32 len;
I32 lensave;
+ char *lsave = lc;
+ char *rsave = rc;
dc = SvPV_force(sv,na);
len = leftlen < rightlen ? leftlen : rightlen;
}
#endif
{
- char *lsave = lc;
- char *rsave = rc;
-
switch (optype) {
case OP_BIT_AND:
while (len--)
{
dSP;
HV *hv = (HV*)POPs;
- I32 i;
register HE *entry;
- char *tmps;
SV *tmpstr;
I32 dokeys = (op->op_type == OP_KEYS);
I32 dovalues = (op->op_type == OP_VALUES);
(void)hv_iterinit(hv); /* always reset iterator regardless */
if (GIMME != G_ARRAY) {
+ I32 i;
dTARGET;
if (!SvRMAGICAL(hv) || !mg_find((SV*)hv,'P'))
PUTBACK; /* hv_iternext and hv_iterval might clobber stack_sp */
while (entry = hv_iternext(hv)) {
SPAGAIN;
- if (dokeys) {
- tmps = hv_iterkey(entry,&i); /* won't clobber stack_sp */
- if (!i)
- tmps = "";
- XPUSHs(sv_2mortal(newSVpv(tmps,i)));
- }
+ if (dokeys)
+ XPUSHs(hv_iterkeysv(entry)); /* won't clobber stack_sp */
if (dovalues) {
tmpstr = NEWSV(45,0);
PUTBACK;
sv_setsv(tmpstr,hv_iterval(hv,entry));
SPAGAIN;
DEBUG_H( {
- sprintf(buf,"%d%%%d=%d\n",entry->hent_hash,
- HvMAX(hv)+1,entry->hent_hash & HvMAX(hv));
- sv_setpv(tmpstr,buf);
+ sprintf(buf,"%d%%%d=%d\n", HeHASH(entry),
+ HvMAX(hv)+1, HeHASH(entry) & HvMAX(hv));
+ sv_setpv(tmpstr,buf);
} )
XPUSHs(sv_2mortal(tmpstr));
}