docs: def ecc_correct_intra(ecc_manager_intra, ecc_params_intra, field, ecc, enable_erasures=False, erasures_char="\x00", only_erasures=False):
      """ Correct an intra-field with its corresponding intra-ecc if necessary """
      fentry_fields = {"ecc_field": ecc}
      field_correct = [] # will store each block of the corrected (or already correct) filepath
      fcorrupted = False # check if field was corrupted
      fcorrected = True # check if field was corrected (if it was corrupted)
      errmsg = ''
      # Decode each block of the filepath
      for e in entry_assemble(fentry_fields, ecc_params_intra, len(field), '', field):
          # Check if this block of the filepath is OK, if yes then we just copy it over
          if ecc_manager_intra.check(e["message"], e["ecc"]):
              field_correct.append(e["message"])
          else: # Else this block is corrupted, we will try to fix it using the ecc
              fcorrupted = True
              # Repair the message block and the ecc
              try:
                  repaired_block, repaired_ecc = ecc_manager_intra.decode(e["message"], e["ecc"], enable_erasures=enable_erasures, erasures_char=erasures_char, only_erasures=only_erasures)
              except (ReedSolomonError, RSCodecError), exc: # the reedsolo lib may raise an exception when it can't decode. We ensure that we can still continue to decode the rest of the file, and the other files.
                  repaired_block = None
                  repaired_ecc = None
                  errmsg += "- Error: metadata field at offset %i: %s\n" % (entry_pos[0], exc)
              # Check if the block was successfully repaired: if yes then we copy the repaired block...
              if repaired_block is not None and ecc_manager_intra.check(repaired_block, repaired_ecc):
                  field_correct.append(repaired_block)
              else: # ... else it failed, then we copy the original corrupted block and report an error later
                  field_correct.append(e["message"])
                  fcorrected = False
      # Join all the blocks into one string to build the final filepath
      if isinstance(field_correct[0], bytearray): field_correct = [str(x) for x in field_correct] # workaround when using --ecc_algo 3 or 4, because we get a list of bytearrays instead of str
      field = ''.join(field_correct)
      # Report errors
      return (field, fcorrupted, fcorrected, errmsg)