Skip to content
Snippets Groups Projects
  1. Jul 18, 2022
    • Clemens Wasser's avatar
      SystemTools: Better GetCasePathName caching · 1c156fd1
      Clemens Wasser authored and Brad King's avatar Brad King committed
      The function `GetActualCaseForPathCached` cached the whole input and
      output of `GetCasePathName`. By caching the calls to `FindFirstFileW`
      instead, many redundant `FindFirstFileW` calls can be avoided.
      1c156fd1
  2. Jun 21, 2022
  3. Jun 17, 2022
  4. Jun 09, 2022
  5. Jun 08, 2022
    • Saleem Abdulrasool's avatar
      SystemTools: add a clonefile optimization on macOS · 0969597d
      Saleem Abdulrasool authored and Brad King's avatar Brad King committed
      Implement the copy file optimization on Darwin for `copy_file` and
      `copy_file_if_different`.  Use the `copyfile` API on macOS 10.5 or
      newer to copy the file using APFS clone semantics.  This is a best
      effort operation, but will fallback to copying without the cloning
      if necessary.  The operation has been available since 10.5, making
      it old enough to assume present as the OS has been EOLed for years
      now.
      0969597d
  6. Jun 03, 2022
  7. Jun 02, 2022
  8. Mar 02, 2022
  9. Feb 18, 2022
  10. Feb 17, 2022
  11. Jan 31, 2022
  12. Jan 29, 2022
  13. Jan 28, 2022
  14. Jan 27, 2022
    • Christopher Chavez's avatar
      ProcessUNIX.c: fix select(), FD_SETSIZE on macOS · 5a33629f
      Christopher Chavez authored
      On macOS (reportedly for 10.5 and later), if _DARWIN_UNLIMITED_SELECT is
      not defined, then the select() call in kwsysProcessWaitForPipe() fails
      with EINVAL when (max + 1) > 1024. And, by default, FD_SETSIZE is 1024;
      passing file descriptors not less than FD_SETSIZE to FD_CLR(), FD_SET(),
      and FD_ISSET() causes out-of-bounds accesses, at least for an fd_set
      allocated on the heap (as is the case for cp->PipeSet, allocated by
      kwsysProcess_New(); one observed effect of this is corruption of the
      "Invalid argument" error message copied from strerror(errno) into
      cp->ErrorMessage, since cp->ErrorMessage is located shortly after
      cp->PipeSet). Defining _DARWIN_UNLIMITED_SELECT and defining FD_SETSIZE
      to OPEN_MAX (10240) avoids these issues.
      5a33629f
  15. Jan 22, 2022
  16. Jan 21, 2022
    • Clemens Wasser's avatar
      Glob: Optimize directory/symlink checks on Windows · d4c5ed92
      Clemens Wasser authored and Brad King's avatar Brad King committed
      Use data saved by `Directory` traversal to avoid repeating work.
      d4c5ed92
    • Brad King's avatar
      Directory: Replace FileData with methods accepting file index · 4b552447
      Brad King authored
      The internal calls to `SystemTools::FileIs{Directory,Symlink}` added by
      commit 7573b0fd (Directory: Add Is{Directory,Symlink} to FileData,
      2022-01-11) pass only the file name, which will be interpreted relative
      to the current working directory rather than the `Directory` path.
      We need to use the absolute path instead.  Rather than trying to
      make this available in the `FileData` structure, provide access to
      the information through methods accepting the file index.
      4b552447
  17. Jan 19, 2022
  18. Jan 18, 2022
  19. Jan 14, 2022
  20. Jan 13, 2022
  21. Jan 11, 2022
  22. Jan 10, 2022
  23. Jan 07, 2022
  24. Jan 06, 2022
    • Jessica Clarke's avatar
      SystemInformation: Change GetRealAddress to return a size_t · ebfb5cdb
      Jessica Clarke authored
      The return value is not a real pointer, but an integer representing the
      offset of the symbol within the loaded binary/library (possibly
      including a load base). On CHERI, and thus Arm's Morello prototype,
      pointers are not just integers but are unforgeable hardware capabilities
      that contain additional metadata (including bounds and permissions) to
      provide fine-grained spatial safety. Casting a plain integer (in this
      case, a ptrdiff_t) to a void * gives a warning that we normally make
      fatal, as due to the unforgeability of capabilities it will not be a
      valid pointer, trapping on dereference. Whilst there are ways to squash
      this warning (typically by casting via (u)intptr_t), they are not
      appropriate here, since the return value does not need to be a void *,
      and are normally only needed for reusing void *-taking interfaces with a
      plain integer (e.g. pthread_create's void * argument). Thus change the
      return type to be size_t to represent that this is the non-negative
      integer offset of the address from the base address.
      
      Note that, other than the dummy call in the constructor that throws away
      the result, this member function is unused.
      ebfb5cdb
  25. Nov 01, 2021
  26. Oct 29, 2021
Loading