Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cfdc6d6c authored by Abhishek Pandit-Subedi's avatar Abhishek Pandit-Subedi Committed by Abhishek Pandit-Subedi
Browse files

Fix incorrect free on InitFlags

When more than 1 flag was given, it wasn't being free'd correctly.

Bug: 189490068
Tag: #floss
Test: Ran btadapterd --hci=0 INIT_gd_hci=true
Change-Id: I278b58a87e9f7769b8ca3b05e06b0c09cfdc7bc6
parent 129e388a
Loading
Loading
Loading
Loading
+3 −4
Original line number Diff line number Diff line
@@ -31,9 +31,8 @@ namespace rust {
InitFlags::InitFlags() {}
InitFlags::~InitFlags() {
  if (flags_) {
    int i = 0;
    for (const char* flag = flags_[i]; flags_[i] != nullptr; ++i) {
      std::free(const_cast<void*>(static_cast<const void*>(flag)));
    for (int i = 0; flags_[i] != nullptr; ++i) {
      std::free(const_cast<void*>(static_cast<const void*>(flags_[i])));
    }

    std::free(const_cast<void*>(static_cast<const void*>(flags_)));
@@ -48,7 +47,7 @@ void InitFlags::Convert(::rust::Vec<::rust::String>& initFlags) {

  for (int i = 0; i < initFlags.size(); ++i) {
    flags_[i] = strndup(initFlags[i].data(), initFlags[i].size());
    if (!flags_) {
    if (!flags_[i]) {
      return;
    }
  }