cafebabe icon indicating copy to clipboard operation
cafebabe copied to clipboard

parseRec substring index problem

Open ireina7 opened this issue 4 years ago • 0 comments

Original Code in package.scala:

private def parseRec(s : String) : (Int,String,String) = if(s.isEmpty)  (0,s,s) else {
    s.head match {
      ...
      case 'L' => {
        val end = s.indexOf(';')
        if(end < 0) sys.error("Malformed type (sub)string: " + s)
        (1, s.substring(0, end), s.substring(end + 1, s.size))
      }
      ...
      case _ => sys.error("Malformed type (sub)string: " + s)
    }
  }

I think the original code case 'L' => {... (1, s.substring(0, end), ...) ...} should be be case 'L' => {... (1, s.substring(0, end + 1), ...) ...} since the parameter end in method substring is exclusive, therefore:

After

private def parseRec(s : String) : (Int,String,String) = if(s.isEmpty)  (0,s,s) else {
    s.head match {
      ...
      case 'L' => {
        val end = s.indexOf(';')
        if(end < 0) sys.error("Malformed type (sub)string: " + s)
        (1, s.substring(0, end + 1), s.substring(end + 1, s.size))
      }
      ...
      case _ => sys.error("Malformed type (sub)string: " + s)
    }
  }

ireina7 avatar Oct 27 '20 13:10 ireina7