message: Fix macOS launch-at-startup memory issue
diff: @@ -686,10 +686,8 @@ bool SetStartOnSystemStartup(bool fAutoStart)
  #elif defined(Q_OS_MAC) && defined(MAC_OS_X_VERSION_MIN_REQUIRED) && MAC_OS_X_VERSION_MIN_REQUIRED <= 101100
  // based on: https://github.com/Mozketo/LaunchAtLoginController/blob/master/LaunchAtLoginController.m
  -LSSharedFileListItemRef findStartupItemInList(LSSharedFileListRef list, CFURLRef findUrl);
  -LSSharedFileListItemRef findStartupItemInList(LSSharedFileListRef list, CFURLRef findUrl)
  +LSSharedFileListItemRef findStartupItemInList(CFArrayRef listSnapshot, LSSharedFileListRef list, CFURLRef findUrl)
  {
  - CFArrayRef listSnapshot = LSSharedFileListCopySnapshot(list, nullptr);
  if (listSnapshot == nullptr) {
  return nullptr;
  }
  @@ -714,15 +712,12 @@ LSSharedFileListItemRef findStartupItemInList(LSSharedFileListRef list, CFURLRef
  if(currentItemURL) {
  if (CFEqual(currentItemURL, findUrl)) {
  // found
  - CFRelease(listSnapshot);
  CFRelease(currentItemURL);
  return item;
  }
  CFRelease(currentItemURL);
  }
  }
  -
  - CFRelease(listSnapshot);
  return nullptr;
  }
  @@ -734,10 +729,12 @@ bool GetStartOnSystemStartup()
  }
  LSSharedFileListRef loginItems = LSSharedFileListCreate(nullptr, kLSSharedFileListSessionLoginItems, nullptr);
  - LSSharedFileListItemRef foundItem = findStartupItemInList(loginItems, bitcoinAppUrl);
  -
  + CFArrayRef listSnapshot = LSSharedFileListCopySnapshot(loginItems, nullptr);
  + bool res = (findStartupItemInList(listSnapshot, loginItems, bitcoinAppUrl) != nullptr);
  CFRelease(bitcoinAppUrl);
  - return !!foundItem; // return boolified object
  + CFRelease(loginItems);
  + CFRelease(listSnapshot);
  + return res;
  }
  bool SetStartOnSystemStartup(bool fAutoStart)
  @@ -748,7 +745,8 @@ bool SetStartOnSystemStartup(bool fAutoStart)
  }
  LSSharedFileListRef loginItems = LSSharedFileListCreate(nullptr, kLSSharedFileListSessionLoginItems, nullptr);
  - LSSharedFileListItemRef foundItem = findStartupItemInList(loginItems, bitcoinAppUrl);
  + CFArrayRef listSnapshot = LSSharedFileListCopySnapshot(loginItems, nullptr);
  + LSSharedFileListItemRef foundItem = findStartupItemInList(listSnapshot, loginItems, bitcoinAppUrl);
  if(fAutoStart && !foundItem) {
  // add bitcoin app to startup item list
  @@ -760,6 +758,8 @@ bool SetStartOnSystemStartup(bool fAutoStart)
  }
  CFRelease(bitcoinAppUrl);
  + CFRelease(loginItems);
  + CFRelease(listSnapshot);
  return true;
  }
  #pragma GCC diagnostic pop
  