]> git.vpit.fr Git - perl/modules/indirect.git/blobdiff - indirect.xs
Remove the 'inside s///' test for now, as it seems to randomly fail
[perl/modules/indirect.git] / indirect.xs
index 7c0144689d9106519b44b62882a6749bdfb495db..f8312ac889a9fe5982ee33dcc28d35d0bbe7fd02 100644 (file)
@@ -183,15 +183,15 @@ STATIC OP *indirect_ck_rv2sv(pTHX_ OP *o) {
    const char *stash = HvNAME_get(PL_curstash);
    STRLEN stashlen = HvNAMELEN_get(PL_curstash);
 
-   if ((len < stashlen + 2) || name != strstr(name, stash)) {
+   if ((len < stashlen + 2) || strnNE(name, stash, stashlen)
+       || name[stashlen] != ':' || name[stashlen+1] != ':') {
     /* Failed again ? Try to remove main */
     stash = "main";
     stashlen = 4;
-    if ((len < stashlen + 2) || name != strstr(name, stash))
+    if ((len < stashlen + 2) || strnNE(name, stash, stashlen)
+        || name[stashlen] != ':' || name[stashlen+1] != ':')
      goto done;
    }
-   if (name[stashlen] != ':' || name[stashlen+1] != ':')
-    goto done;
 
    sv_setpvn(sv, "$", 1);
    stashlen += 2;
@@ -225,8 +225,6 @@ STATIC OP *indirect_ck_padany(pTHX_ OP *o) {
   if (*s == '$' && ++s <= t) {
    while (s < t && isSPACE(*s)) ++s;
    while (s < t && isSPACE(*t)) --t;
-   if (!isALPHA(*s))
-    return o;
    sv = sv_2mortal(newSVpvn("$", 1));
    sv_catpvn_nomg(sv, s, t - s + 1);
    indirect_map_store(o, s, sv);