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

Commit 11cd49c0 authored by Elliott Hughes's avatar Elliott Hughes Committed by Gerrit Code Review
Browse files

Merge "Move off safe-iop."

parents 49c4cd4d 85528e8a
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -58,7 +58,6 @@ cc_defaults {
        "-Wall",
        "-Werror",
    ],
    include_dirs: ["external/safe-iop/include"],
    header_libs: [
        "libutils_headers",
    ],
+9 −10
Original line number Diff line number Diff line
@@ -24,8 +24,6 @@

#include <log/log.h>

#include <safe_iop.h>

#include "SharedBuffer.h"

/*****************************************************************************/
@@ -342,7 +340,7 @@ ssize_t VectorImpl::setCapacity(size_t new_capacity)
    }

    size_t new_allocation_size = 0;
    LOG_ALWAYS_FATAL_IF(!safe_mul(&new_allocation_size, new_capacity, mItemSize));
    LOG_ALWAYS_FATAL_IF(__builtin_mul_overflow(new_capacity, mItemSize, &new_allocation_size));
    SharedBuffer* sb = SharedBuffer::alloc(new_allocation_size);
    if (sb) {
        void* array = sb->data();
@@ -386,7 +384,7 @@ void* VectorImpl::_grow(size_t where, size_t amount)
            this, (int)where, (int)amount, (int)mCount); // caller already checked

    size_t new_size;
    LOG_ALWAYS_FATAL_IF(!safe_add(&new_size, mCount, amount), "new_size overflow");
    LOG_ALWAYS_FATAL_IF(__builtin_add_overflow(mCount, amount, &new_size), "new_size overflow");

    if (capacity() < new_size) {
        // NOTE: This implementation used to resize vectors as per ((3*x + 1) / 2)
@@ -397,14 +395,15 @@ void* VectorImpl::_grow(size_t where, size_t amount)
        //
        // This approximates the old calculation, using (x + (x/2) + 1) instead.
        size_t new_capacity = 0;
        LOG_ALWAYS_FATAL_IF(!safe_add(&new_capacity, new_size, (new_size / 2)),
        LOG_ALWAYS_FATAL_IF(__builtin_add_overflow(new_size, (new_size / 2), &new_capacity),
                            "new_capacity overflow");
        LOG_ALWAYS_FATAL_IF(!safe_add(&new_capacity, new_capacity, static_cast<size_t>(1u)),
        LOG_ALWAYS_FATAL_IF(
                __builtin_add_overflow(new_capacity, static_cast<size_t>(1u), &new_capacity),
                "new_capacity overflow");
        new_capacity = max(kMinVectorCapacity, new_capacity);

        size_t new_alloc_size = 0;
        LOG_ALWAYS_FATAL_IF(!safe_mul(&new_alloc_size, new_capacity, mItemSize),
        LOG_ALWAYS_FATAL_IF(__builtin_mul_overflow(new_capacity, mItemSize, &new_alloc_size),
                            "new_alloc_size overflow");

        // ALOGV("grow vector %p, new_capacity=%d", this, (int)new_capacity);
@@ -464,7 +463,7 @@ void VectorImpl::_shrink(size_t where, size_t amount)
            this, (int)where, (int)amount, (int)mCount); // caller already checked

    size_t new_size;
    LOG_ALWAYS_FATAL_IF(!safe_sub(&new_size, mCount, amount));
    LOG_ALWAYS_FATAL_IF(__builtin_sub_overflow(mCount, amount, &new_size));

    if (new_size < (capacity() / 2)) {
        // NOTE: (new_size * 2) is safe because capacity didn't overflow and