# Global Metrics

path: .metrics.cyclomatic.sum
old: 14.0
new: 113.0
path: .metrics.cyclomatic.average
old: 1.4
new: 4.035714285714286
path: .metrics.nargs.average
old: 0.7142857142857143
new: 1.4285714285714286
path: .metrics.nargs.sum
old: 5.0
new: 20.0
path: .metrics.nexits.sum
old: 2.0
new: 49.0
path: .metrics.nexits.average
old: 0.2857142857142857
new: 3.5
path: .metrics.nom.functions
old: 7.0
new: 12.0
path: .metrics.nom.closures
old: 0.0
new: 2.0
path: .metrics.nom.total
old: 7.0
new: 14.0
path: .metrics.cognitive.sum
old: 3.0
new: 100.0
path: .metrics.cognitive.average
old: 0.42857142857142855
new: 7.142857142857143
path: .metrics.mi.mi_original
old: 64.98617869039423
new: -8.601013945156254
path: .metrics.mi.mi_sei
old: 49.63315310638415
new: -53.11423339375398
path: .metrics.mi.mi_visual_studio
old: 38.00361326923639
new: 0.0
path: .metrics.loc.lloc
old: 10.0
new: 179.0
path: .metrics.loc.ploc
old: 42.0
new: 470.0
path: .metrics.loc.sloc
old: 63.0
new: 582.0
path: .metrics.loc.blank
old: 10.0
new: 54.0
path: .metrics.loc.cloc
old: 11.0
new: 58.0
path: .metrics.halstead.length
old: 165.0
new: 2008.0
path: .metrics.halstead.level
old: 0.06525573192239859
new: 0.016273813367775267
path: .metrics.halstead.N1
old: 102.0
new: 1193.0
path: .metrics.halstead.bugs
old: 0.19928545039902384
new: 3.353981387572876
path: .metrics.halstead.purity_ratio
old: 1.623081360934744
new: 1.100446108681691
path: .metrics.halstead.N2
old: 63.0
new: 815.0
path: .metrics.halstead.n2
old: 37.0
new: 252.0
path: .metrics.halstead.vocabulary
old: 55.0
new: 290.0
path: .metrics.halstead.difficulty
old: 15.324324324324325
new: 61.448412698412696
path: .metrics.halstead.estimated_program_length
old: 267.8084245542328
new: 2209.6957862328354
path: .metrics.halstead.n1
old: 18.0
new: 38.0
path: .metrics.halstead.effort
old: 14618.24616212972
new: 1009305.9986342604
path: .metrics.halstead.time
old: 812.1247867849844
new: 56072.55547968113
path: .metrics.halstead.volume
old: 953.9243527315688
new: 16425.25745274999

# Spaces Data

## Minimal test - lines (93, 93)

path: .spaces[0].spaces[0].metrics.nom.functions
old: 1.0
new: 0.0
path: .spaces[0].spaces[0].metrics.nom.total
old: 1.0
new: 0.0
path: .spaces[0].spaces[0].metrics.mi.mi_sei
old: 102.79291085084688
new: null
path: .spaces[0].spaces[0].metrics.mi.mi_original
old: 123.58129616512124
new: null
path: .spaces[0].spaces[0].metrics.mi.mi_visual_studio
old: 72.26976383925219
new: null
path: .spaces[0].spaces[0].metrics.nexits.sum
old: 1.0
new: 0.0
path: .spaces[0].spaces[0].metrics.nexits.average
old: 1.0
new: null
path: .spaces[0].spaces[0].metrics.halstead.estimated_program_length
old: 35.60964047443681
new: null
path: .spaces[0].spaces[0].metrics.halstead.length
old: 15.0
new: 1.0
path: .spaces[0].spaces[0].metrics.halstead.n2
old: 5.0
new: 1.0
path: .spaces[0].spaces[0].metrics.halstead.time
old: 14.80175887256437
new: 0.0
path: .spaces[0].spaces[0].metrics.halstead.level
old: 0.20833333333333337
new: null
path: .spaces[0].spaces[0].metrics.halstead.effort
old: 266.43165970615865
new: 0.0
path: .spaces[0].spaces[0].metrics.halstead.N1
old: 9.0
new: 0.0
path: .spaces[0].spaces[0].metrics.halstead.n1
old: 8.0
new: 0.0
path: .spaces[0].spaces[0].metrics.halstead.bugs
old: 0.013801807486869684
new: 0.0
path: .spaces[0].spaces[0].metrics.halstead.N2
old: 6.0
new: 1.0
path: .spaces[0].spaces[0].metrics.halstead.vocabulary
old: 13.0
new: 1.0
path: .spaces[0].spaces[0].metrics.halstead.difficulty
old: 4.8
new: 0.0
path: .spaces[0].spaces[0].metrics.halstead.volume
old: 55.506595772116384
new: 0.0
path: .spaces[0].spaces[0].metrics.halstead.purity_ratio
old: 2.3739760316291205
new: null
path: .spaces[0].spaces[0].metrics.nargs.average
old: 1.0
new: null
path: .spaces[0].spaces[0].metrics.nargs.sum
old: 1.0
new: 0.0
path: .spaces[0].spaces[0].metrics.loc.lloc
old: 1.0
new: 0.0
path: .spaces[0].spaces[0].metrics.loc.ploc
old: 5.0
new: 1.0
path: .spaces[0].spaces[0].metrics.loc.sloc
old: 5.0
new: 1.0
path: .spaces[0].spaces[0].metrics.cognitive.average
old: 0.0
new: null
path: .spaces[0].spaces[0].metrics.cyclomatic.sum
old: 2.0
new: 1.0

### Code

      struct stat buf;

## Minimal test - lines (49, 131)

path: .spaces[0].metrics.nexits.sum
old: 2.0
new: 13.0
path: .spaces[0].metrics.nexits.average
old: 0.2857142857142857
new: 13.0
path: .spaces[0].metrics.loc.blank
old: 7.0
new: 8.0
path: .spaces[0].metrics.loc.cloc
old: 1.0
new: 11.0
path: .spaces[0].metrics.loc.lloc
old: 10.0
new: 33.0
path: .spaces[0].metrics.loc.ploc
old: 38.0
new: 64.0
path: .spaces[0].metrics.loc.sloc
old: 46.0
new: 83.0
path: .spaces[0].metrics.nargs.average
old: 0.7142857142857143
new: 2.0
path: .spaces[0].metrics.nargs.sum
old: 5.0
new: 2.0
path: .spaces[0].metrics.mi.mi_visual_studio
old: 41.21618900210258
new: 33.187421422038305
path: .spaces[0].metrics.mi.mi_original
old: 70.47968319359542
new: 56.750490631685494
path: .spaces[0].metrics.mi.mi_sei
old: 38.625247826741905
new: 34.32593717620926
path: .spaces[0].metrics.cyclomatic.sum
old: 13.0
new: 14.0
path: .spaces[0].metrics.cyclomatic.average
old: 1.4444444444444444
new: 7.0
path: .spaces[0].metrics.nom.total
old: 7.0
new: 1.0
path: .spaces[0].metrics.nom.functions
old: 7.0
new: 1.0
path: .spaces[0].metrics.halstead.level
old: 0.06296296296296296
new: 0.027255029201817004
path: .spaces[0].metrics.halstead.time
old: 814.8275597107562
new: 4014.17102851816
path: .spaces[0].metrics.halstead.vocabulary
old: 52.0
new: 65.0
path: .spaces[0].metrics.halstead.estimated_program_length
old: 248.03238662847315
new: 330.5192567460192
path: .spaces[0].metrics.halstead.difficulty
old: 15.882352941176473
new: 36.69047619047619
path: .spaces[0].metrics.halstead.bugs
old: 0.19972735703771655
new: 0.5782615688461317
path: .spaces[0].metrics.halstead.n1
old: 18.0
new: 23.0
path: .spaces[0].metrics.halstead.n2
old: 34.0
new: 42.0
path: .spaces[0].metrics.halstead.volume
old: 923.4712343388568
new: 1969.3142748603043
path: .spaces[0].metrics.halstead.N1
old: 102.0
new: 193.0
path: .spaces[0].metrics.halstead.N2
old: 60.0
new: 134.0
path: .spaces[0].metrics.halstead.effort
old: 14666.89607479361
new: 72255.07851332688
path: .spaces[0].metrics.halstead.length
old: 162.0
new: 327.0
path: .spaces[0].metrics.halstead.purity_ratio
old: 1.531064114990575
new: 1.0107622530459304
path: .spaces[0].metrics.cognitive.sum
old: 3.0
new: 15.0
path: .spaces[0].metrics.cognitive.average
old: 0.42857142857142855
new: 15.0

### Code

    bool mozilla::fallocate(PRFileDesc* aFD, int64_t aLength) {
    #  if defined(HAVE_POSIX_FALLOCATE)
      return posix_fallocate(PR_FileDesc2NativeHandle(aFD), 0, aLength) == 0;
    #  elif defined(XP_WIN)
      int64_t oldpos = PR_Seek64(aFD, 0, PR_SEEK_CUR);
      if (oldpos == -1) {
        return false;
      }

      if (PR_Seek64(aFD, aLength, PR_SEEK_SET) != aLength) {
        return false;
      }

      bool retval = (0 != SetEndOfFile((HANDLE)PR_FileDesc2NativeHandle(aFD)));

      PR_Seek64(aFD, oldpos, PR_SEEK_SET);
      return retval;
    #  elif defined(XP_MACOSX)
      int fd = PR_FileDesc2NativeHandle(aFD);
      fstore_t store = {F_ALLOCATECONTIG, F_PEOFPOSMODE, 0, aLength};
      // Try to get a continous chunk of disk space
      int ret = fcntl(fd, F_PREALLOCATE, &store);
      if (ret == -1) {
        // OK, perhaps we are too fragmented, allocate non-continuous
        store.fst_flags = F_ALLOCATEALL;
        ret = fcntl(fd, F_PREALLOCATE, &store);
        if (ret == -1) {
          return false;
        }
      }
      return ftruncate(fd, aLength) == 0;
    #  elif defined(XP_UNIX)
      // The following is copied from fcntlSizeHint in sqlite
      /* If the OS does not have posix_fallocate(), fake it. First use
      ** ftruncate() to set the file size, then write a single byte to
      ** the last byte in each block within the extended region. This
      ** is the same technique used by glibc to implement posix_fallocate()
      ** on systems that do not have a real fallocate() system call.
      */
      int64_t oldpos = PR_Seek64(aFD, 0, PR_SEEK_CUR);
      if (oldpos == -1) {
        return false;
      }

      struct stat buf;
      int fd = PR_FileDesc2NativeHandle(aFD);
      if (fstat(fd, &buf)) {
        return false;
      }

      if (buf.st_size >= aLength) {
        return false;
      }

      const int nBlk = buf.st_blksize;

      if (!nBlk) {
        return false;
      }

      if (ftruncate(fd, aLength)) {
        return false;
      }

      int nWrite;  // Return value from write()
      int64_t iWrite = ((buf.st_size + 2 * nBlk - 1) / nBlk) * nBlk -
                       1;  // Next offset to write to
      while (iWrite < aLength) {
        nWrite = 0;
        if (PR_Seek64(aFD, iWrite, PR_SEEK_SET) == iWrite) {
          nWrite = PR_Write(aFD, "", 1);
        }
        if (nWrite != 1) {
          break;
        }
        iWrite += nBlk;
      }

      PR_Seek64(aFD, oldpos, PR_SEEK_SET);
      return nWrite == 1;
    #  endif
      return false;
    }