prevent toke_scan_str moving backward in linestr
[p5sagit/Devel-Declare.git] / Declare.xs
index 3f1728a..e36668d 100644 (file)
@@ -219,18 +219,16 @@ int dd_toke_scan_ident(pTHX_ int offset) {
 
 int dd_toke_scan_str(pTHX_ int offset) {
   char* old_pvx = SvPVX(PL_linestr);
-  STRLEN remaining = sv_len(PL_linestr) - offset;
   SV* line_copy = sv_2mortal(newSVsv(PL_linestr));
   char* base_s = SvPVX(PL_linestr) + offset;
   char* s = scan_str(base_s, FALSE, FALSE);
   if(SvPVX(PL_linestr) != old_pvx)
     croak("PL_linestr reallocated during scan_str, "
       "Devel::Declare can't continue");
-  if (s != base_s && sv_len(PL_lex_stuff) > remaining) {
-    int ret = (s - SvPVX(PL_linestr)) + remaining;
+  if (s <= base_s) {
+    s += SvCUR(line_copy);
     sv_catsv(line_copy, PL_linestr);
     dd_set_linestr(aTHX_ SvPV_nolen(line_copy));
-    return ret;
   }
   return s - base_s;
 }